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

作者:网络 来源:佚名 更新时间:2008-02-05 16:01:12 点击:
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);
}


注册会员,创建你的web开发资料库,