ASPx页面上有三个DropDownList控件,
DropDownList1 表示年,DropDownList2表示月,DropDownList3表示天;注意用将这三个DropDownList控件的AutoPostBack属性设为True。
用户可以方便地选择年月日,并且每月的日期会随着用户选择不同的年,月而发生相应的变化
其后台cs文件代码如下:
private void Page_Load (object sender, System.EventArgs e)
{
DateTime tnow=DateTime.Now;
//现在时间
ArrayList AlYear=new ArrayList();
int i;
for (i=2002;i<=2010;i++) AlYear.Add (i);
ArrayList AlMonth=new ArrayList();
for (i=1;i<=12;i++) AlMonth.Add (i);
if (!(this.IsPostBack))
{
DropDownList1.DataSource=AlYear;
DropDownList1.DataBind ();
//绑定年
//选择当前年
DropDownList1.SelectedValue=tnow.Year.ToString ();
DropDownList2.DataSource=AlMonth; DropDownList2.DataBind ();
//绑定月
//选择当前月
DropDownList2.SelectedValue=tnow.Month.ToString ();
int year,month;
year=Int32.Parse(DropDownList1.SelectedValue);
month=Int32.Parse(DropDownList2.SelectedValue);
BindDays(year,month);
//绑定天
//选择当前日期
DropDownList3.SelectedValue=tnow.Day.ToString();
}
}
//判断闰年
private bool CheckLeap (int year)
{
if ((year%4==0)&&(year%100!=0)||(year%400==0))
return true;
else
return false;
}
//绑定每月的天数
private void BindDays(int year,int month)
{
int i;
ArrayList AlDay=new ArrayList();
switch (month)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
for (i=1;i<=31;i++)
AlDay.Add (i);
break;
case 2:
if (CheckLeap (year))
{
for (i=1;i<=29;i++) AlDay.Add (i);
}
else
{
for (i=1;i<=28;i++) AlDay.Add (i);
}
break;
case 4: case 6: case 9: case 11:
for (i=1;i<=30;i++)
AlDay.Add (i);
break;
}
DropDownList3.DataSource=AlDay;
DropDownList3.DataBind ();
}
//选择年
private void DropDownList1_SelectedIndexChanged (object sender, System.EventArgs e)
{
int year,month;
year=Int32.Parse(DropDownList1.SelectedValue);
month=Int32.Parse(DropDownList2.SelectedValue);
BindDays(year,month);
}
//选择月
private void DropDownList2_SelectedIndexChanged (object sender, System.EventArgs e)
{
int year,month;
year=Int32.Parse(DropDownList1.SelectedValue);
month=Int32.Parse(DropDownList2.SelectedValue);
BindDays(year,month);
}