在ASP.NET中用三个DropDownList控件方便的选择年月日

来源:互联网 发布:mac 接口压力测试工具 编辑:程序博客网 时间:2024/06/06 00:41

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


0 0