0

我有这个 Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Xml;
using System.IO;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        Calendar1.SelectedDate = DateTime.Today;
        info.Visible = false;
        meeting.Visible = true;
        member.Visible = true;
        label.Visible = true;
    }

    protected void Button3_Click(object sender, EventArgs e)
    {
        DateTime Now = DateTime.Today;
        DateTime wed1 = getFirstWednesdayOfMonth(Now);
        DateTime wed3 = getThirdWednesdayOfMonth(Now);

        if (Now < wed1)
        {
            Label5.Text = "The next meeting is on" + "\n" + wed1.ToShortDateString() + "\nat 7 pm in room S242";
        }
        else if (Now < wed3)
        {
            Label5.Text = "The next meeting is on" + "\n" + wed3.ToShortDateString() + "\nat 7 pm in room S242";
        }
    }

    protected DateTime getFirstWednesdayOfMonth(DateTime seedDate)
    {
        DateTime wed1 = new DateTime(seedDate.Year, seedDate.Month, 1);
        while (wed1.DayOfWeek != DayOfWeek.Wednesday)
        {
            wed1 = wed1.AddDays(1);
        }
        return wed1;
    }
    protected DateTime getThirdWednesdayOfMonth(DateTime seedDate)
    {
        DateTime wed3 = new DateTime(seedDate.Year, seedDate.Month, 15);
        while (wed3.DayOfWeek != DayOfWeek.Wednesday)
        {
            wed3 = wed3.AddDays(1);
        }
        return wed3;
    }

    protected void btnInfo_Click(object sender, EventArgs e)
    {
        btnInfo.Visible = false;
        info.Visible = true;

    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            if (validateFirst.IsValid && validateLast.IsValid && validatePhone.IsValid && validateEmail.IsValid)
            {
                lblThanks.Text = "Thanks! you will contacted in 2 business days!";
                info.Visible = false;
            }
        }
    }
    protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ListBox1.SelectedValue == "analyst")
        {


        }
    }
}

和 Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
    <style type="text/css">
        .heading
        {
            text-align: center;
            border-style: double;
            background-color:#F2A988;
            font-family:Sans-Serif;
            font-weight:bold;

        }
        #wrapper {
            margin: 0 auto;
            width: 400px; 
            text-align:left;
        }
        .style1
        {
            text-align: center;
            font-family:Sans-Serif;
        }
        .style2
        {
            font-family: Arial, Helvetica, sans-serif;
        }
    </style>
</head>
<body style="height: 642px; width: 911px; " id="wrapper">
    <form id="form1" runat="server">

    <div class="heading">
        ABC Computer Club - Inquiry Form</div>
        <br />

    <asp:Calendar ID="Calendar1" runat="server" Font-Names="Arial"></asp:Calendar>



        <br />
    <asp:Label ID="lblThanks" runat="server" 
        style="font-family: Arial, Helvetica, sans-serif; font-weight: 700"></asp:Label>
    <br />



        <br />

    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <asp:Button ID="btnInfo" runat="server" Font-Names="Arial" 
         style="font-weight: 700" 
        Text="I'd like to receive more information!" Width="261px" 
        onclick="btnInfo_Click" />

    <div runat="server" id="info" 
        style="position:relative; top: -1px; left: 7px; width: 463px; height: 415px;">
        <span class="style2">If you would like to join the club or receive more 
        information about the club, fill in the form below and click the submit button.</span><br />
        <br />
        <asp:Label ID="Label1" runat="server" 
            style="font-weight: 700; font-family: Arial, Helvetica, sans-serif" 
            Text="First Name:"></asp:Label>
&nbsp;<asp:TextBox ID="txtFName" runat="server"></asp:TextBox>
        <br />
        <br />
        <asp:Label ID="Label2" runat="server" 
            style="font-weight: 700; font-family: Arial, Helvetica, sans-serif" 
            Text="Last Name:"></asp:Label>
&nbsp;<asp:TextBox ID="txtLName" runat="server"></asp:TextBox>
        <br />
        <br />
        <asp:Label ID="Label3" runat="server" 
            style="font-weight: 700; font-family: Arial, Helvetica, sans-serif" 
            Text="Phone #:"></asp:Label>
&nbsp;&nbsp;&nbsp;&nbsp;
        <asp:TextBox ID="txtPhone" runat="server"></asp:TextBox>
        <br />
        <br />
        <asp:Label ID="Label4" runat="server" 
            style="font-weight: 700; font-family: Arial, Helvetica, sans-serif" 
            Text="Email:"></asp:Label>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
        <br />
        <br />
        <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Submit" />
        <br />
        <br />
        <asp:RequiredFieldValidator ID="validateFirst" runat="server" 
            ControlToValidate="txtFName" ErrorMessage="First Name is Required" 
            style="font-family: Arial, Helvetica, sans-serif"></asp:RequiredFieldValidator>
        <br />
        <br />
        <asp:RequiredFieldValidator ID="validateLast" runat="server" 
            ControlToValidate="txtLName" ErrorMessage="Last Name is Required" 
            style="font-family: Arial, Helvetica, sans-serif"></asp:RequiredFieldValidator>
        <br />
        <br />
        <asp:RegularExpressionValidator ID="validatePhone" runat="server" 
            ControlToValidate="txtPhone" ErrorMessage="Phone Number is invalid" 
            style="font-family: Arial, Helvetica, sans-serif" 
            ValidationExpression="^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$"></asp:RegularExpressionValidator>
        <br />
        <br />
        <asp:RegularExpressionValidator ID="validateEmail" runat="server" 
            ControlToValidate="txtEmail" ErrorMessage="Invalid Email" 
            style="font-family: Arial, Helvetica, sans-serif" 
            ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
    </div>

    <div runat="server" id="meeting" 
        style="position:absolute; top: 150px; left: 580px; width: 232px; height: 64px; text-align: center; margin-top: 0px; font-family: Arial; font-weight:bold;">
        <br />
&nbsp;&nbsp;&nbsp;&nbsp;
        <asp:Label ID="Label5" runat="server" Text="Test"></asp:Label>
        <br />
        </div>



    <div runat="server" id="label" style="width: 308px; position:absolute; top: 45px; left: 550px; margin-top: 0px;" 
        class="style1">
        Click Below to find out when
        <br />
        the club meets next</div>

    <div runat="server" id="member" 



        style="position:absolute; top: 28px; left:880px; width: 274px; height: 441px; font-family:Sans-Serif;">
        <b>View Members by Program:<br />
        <asp:ListBox ID="ListBox1" runat="server" Height="175px" Width="213px" 
            onselectedindexchanged="ListBox1_SelectedIndexChanged">
            <asp:ListItem Value="all">All</asp:ListItem>
            <asp:ListItem Value="programmer">Computer Programmer</asp:ListItem>
            <asp:ListItem Value="itss">Information Technologies Support Services</asp:ListItem>
            <asp:ListItem Value="analyst">Systems Analyst</asp:ListItem>
        </asp:ListBox>
        <br />
        <br />
        </b></div>

    <div style="position:absolute; top: 99px; left: 600px; width: 192px; text-align: center; margin-top: 0px;">
        <asp:Button ID="Button3" runat="server" onclick="Button3_Click" 
            Text="Next Meeting" />
    </div>

    </form>
</body>
</html>

问题是,每当我单击“下一个会议”时,什么都没有发生,而它应该将标签文本设置为 Next Available first or third week of the month。它以前确实有效,但是自从我将整个代码复制到新网站后,它就不起作用了。可能是什么问题?

4

2 回答 2

2

该代码从未正常工作过。也许它似乎在 2012 年 7 月 18 日之前有效,这是本月的第三个星期三,因为那时(Now < wed3) == true.

现在既不是Now < wed1也不Now < wed3是真的,这是更改标签文本属性的唯一方法。

if (Now < wed1)
{
    Label5.Text = "The next meeting is on" + "\n" + wed1.ToShortDateString() + "\nat 7 pm in room S242";
}
else if (Now < wed3)
{
    Label5.Text = "The next meeting is on" + "\n" + wed3.ToShortDateString() + "\nat 7 pm in room S242";
}

也许您需要告诉我们您的真实需求。你的程序应该做什么?

您可能还想if(!IsPostback)检查 page_load 中的默认设置,否则Calendar.SelectedDate总是会被覆盖。

if(!Page.IsPostBack)
{
    // not on postbacks, f.e. when the user selected a date
    Calendar1.SelectedDate = DateTime.Today;
    // ....
}

但是有一点,如果没有可用的第一个或第三个星期三,它应该显示下个月的第一个星期三。对?

这是我要求的缺失要求。由于第三个星期三已经过去,你想返回下个月的第三个星期三:

public static DateTime getNextWeekDay(DateTime date, DayOfWeek dayOfWeek, int weekNum)
{
    if (weekNum < 1 || weekNum > 4)
        throw new ArgumentException("Number of week must be between 1 and 4.", "weekNum");

    int inWeekNum = date.Date.Day / 7;
    if (inWeekNum >= weekNum)
    {
        var nextMonth = date.AddMonths(1);
        date = new DateTime(nextMonth.Year, nextMonth.Month, 1);
    }
    DateTime currentDate = date;
    int currentWeekNum = 0;
    while (currentWeekNum < weekNum)
    {
        if (currentDate.DayOfWeek == dayOfWeek)
            currentWeekNum++;
        if (currentWeekNum == weekNum)
            break;
        else
            currentDate = currentDate.AddDays(1);
    }
    return currentDate;
}

Yiou可以这样使用:

DateTime wed1 = getNextWeekDay(Now, DayOfWeek.Wednesday, 1);
DateTime wed3 = getNextWeekDay(Now, DayOfWeek.Wednesday, 3);
于 2012-07-21T21:42:22.503 回答
1

你需要第三种情况

DateTime getFirstWednesdayOfNextMonth(DateTime seedDate) 
{ 
    int year = seedDate.Year;
    int month = seedDate.Month+1;
    if (month > 12) 
    {
        month = 1; 
        year = year + 1;
    }
    DateTime wed1 = new DateTime(year, month, 1); 
    while (wed1.DayOfWeek != DayOfWeek.Wednesday) 
    { 
       wed1 = wed1.AddDays(1); 
    } 
    return wed1; 
} 

并将结尾添加到您的 Button3_Click

protected void Button3_Click(object sender, EventArgs e)    
{    
    DateTime Now = DateTime.Today;    
    DateTime wed1 = getFirstWednesdayOfMonth(Now);    
    DateTime wed3 = getThirdWednesdayOfMonth(Now);    
    DateTime wedNext = getFirstWednesdayOfNextMonth(Now);    

    if (Now < wed1)    
    {    
        Label5.Text = "The next meeting is on" + "\n" + wed1.ToShortDateString() + "\nat 7 pm in room S242";    
    }    
    else if (Now < wed3)    
    {    
        Label5.Text = "The next meeting is on" + "\n" + wed3.ToShortDateString() + "\nat 7 pm in room S242";    
    }    
    else     
    {    
        Label5.Text = "The next meeting is on" + "\n" + wedNextMonth.ToShortDateString() + "\nat 7 pm in room S242";    
    }    
}    

顺便说一句,当您知道每月的第一个星期三时,计算另外两个很简单,只需将第一个星期三加 14。

  DateTime wed1 = getFirstWednesdayOfMonth(Now); 
  DateTime wed3 = wed.AddDays(14);
  DateTime wedNext = wed3.AddDays(14);
  // But it could be in the same month (1,8,15,22,29)
  if(wedNext.Month == wed3.Month)
     wedNext = wedNext.AddDays(7);
于 2012-07-21T22:05:18.600 回答