日期:2009-11-13  浏览次数:20575 次

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