我有这个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 />
<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>
<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>
<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>
<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>
<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 />
<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>
问题在于,每当我点击“下次会议”没有任何反应,而它应该将标签文本设置为下个可用的第一个或第三个星期三。它之前确实有效,但是当我将整个代码复制到一个新网站时,它无法正常工作。可能是什么问题?
答案 0 :(得分:2)
该代码从未正常运行。也许它似乎在2012年7月18日之前工作,这是本月的第三个星期三,因为那时(Now < wed3) == true
。
现在Now < wed1
和Now < wed3
都不是true,这是更改标签文字属性的唯一方法。
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;
}
Yiou可以这样使用它:
DateTime wed1 = getNextWeekDay(Now, DayOfWeek.Wednesday, 1);
DateTime wed3 = getNextWeekDay(Now, DayOfWeek.Wednesday, 3);
答案 1 :(得分: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);