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