2012-07-21 232 views
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> 

的问题是,每当我点击“下次会议”什么也没有发生,而它应该将标签文本设置为月的第一个或第三个星期三。它曾经工作过,但从我复制整个代码到一个新的网站,它不工作。可能是什么问题?

+1

请将您的标题修改为更加描述实际问题的内容。 – Oded 2012-07-21 21:22:47

+0

另外,你是否检查过你的新网站,看它是否被正确配置为使用正确的.NET版本? – Oded 2012-07-21 21:24:42

+1

定义“不工作”。不回复,回帖后不更改标签,什么? – freefaller 2012-07-21 21:24:57

回答

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); 
2

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

现在Now < wed1Now < 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"; 
} 

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

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

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

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

这就是我所要求的缺失要求。由于第三个星期三已经过去,要返回NEX月份的第三个星期三:

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; 
} 

佑可以使用这种方式:

DateTime wed1 = getNextWeekDay(Now, DayOfWeek.Wednesday, 1); 
DateTime wed3 = getNextWeekDay(Now, DayOfWeek.Wednesday, 3); 
+0

我真正的要求是我想显示下个月的第一或第三个星期三。我通过设置标签来完成。 – unknownsatan 2012-07-21 21:46:16

+0

@AnkurKaushal:既然已经是过去了,那么这个月没有“下一个可用的三分之一”。程序也能正常工作吗? – 2012-07-21 21:47:47

+0

除“下一个会议”按钮外,一切正常。 :/ – unknownsatan 2012-07-21 21:50:04