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