用DropDownList显示不同的月份对应不同的天数

来源:互联网 发布:网络编程ravedonut 编辑:程序博客网 时间:2024/04/29 06:06
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);  
      } 

////////////////////////////////////////////////////////////////////////////////////////////////////////

namespace   WebApplication1  
  {  
  using   System;  
  using   System.Data;  
  using   System.Drawing;  
  using   System.Web;  
  using   System.Web.UI.WebControls;  
  using   System.Web.UI.HtmlControls;  
   
  ///   <summary>  
  ///   YearMonthDayDownDropList   的摘要说明。  
  ///   </summary>  
  public   abstract   class   YearMonthDayDownDropList   :   System.Web.UI.UserControl  
  {  
  //选择的年月日如:20021225  
  public   string   SelectTime  
  {    
  get    
  {  
  return   Request.Form[YearName]+Request.Form[MonthName]+Request.Form[DayName]+Request.Form[HourName]+Request.Form[MinuteName];  
  }  
  }  
  protected   int   ServerYear;   //服务器当前选择年  
  protected   int   ServerMonth;//服务器当前月  
  protected   int   ServerNowYear;   //服务器当前年  
  protected   int   ServerDay;   //服务器当前天  
  protected   int   ServerMonthDays;//当前月天数  
  protected   int   ServerHour;//小时  
  protected   int   ServerMinute;//分钟  
   
  protected   string   JavascriptFunName;   //此user   control发出的函数名称  
  protected   string   YearName;   //此user   control发出的年控件的名称  
  protected   string   MonthName;//此user   control发出的月控件的名称  
  protected   string   DayName;   //此user   control发出的日控件的名称  
  protected   string   HourName;//小时  
  protected   string   MinuteName;//分钟  
   
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   在此处放置用户代码以初始化页面  
  string   id=   this.UniqueID;  
   
  if(!this.Page.IsClientScriptBlockRegistered(id))  
  {  
  JavascriptFunName="chanday"+id+"()";  
  YearName="year"+id;  
  MonthName="month"+id;  
  DayName="day"+id;  
   
  string   scriptString   ="<script   language=javascript>";  
  scriptString=scriptString+"function   "+JavascriptFunName;  
  scriptString=scriptString+   "{   var   days;";  
  scriptString=scriptString+"   var   currentyear;";  
  scriptString=scriptString   +"days=31;";  
  scriptString=scriptString+"   if(window.document.forms[0]."+MonthName+".value==04||window.document.forms[0]."+MonthName+".value==06||window.document.forms[0]."+MonthName+".value==09||window.document.forms[0]."+MonthName+".value==11)";  
  scriptString=scriptString+"   days=30;";  
  scriptString=scriptString+"else   if(window.document.forms[0]."+MonthName+".value==02)   {";  
  scriptString=scriptString+"Nowyear=window.document.forms[0]."+YearName+".value   ;";  
  scriptString=scriptString+   "   if((Nowyear%4==0   &&Nowyear%100!=0)   ||   Nowyear%400==0)";  
  scriptString=scriptString+"   days=29;";  
  scriptString=scriptString+"   else   days=28;";    
  scriptString=scriptString+"   }";  
  scriptString=scriptString+   "   flen=window.document.forms[0]."+DayName+".length   ;";  
  scriptString=scriptString+"   window.document.forms[0]."+DayName+".length   =days;";  
  scriptString=scriptString+   "   i=flen+1;";  
  scriptString=scriptString+"for(i;i<=days;i++)";  
  scriptString=scriptString+"{";  
  scriptString=scriptString+"   window.document.forms[0]."+DayName+".options(i-1).text=i;";  
  scriptString=scriptString+"   window.document.forms[0]."+DayName+".options(i-1).value=i;";  
  scriptString=scriptString+"   }";  
  scriptString=scriptString+"}";  
  scriptString=scriptString+"</script>";  
  this.Page.RegisterClientScriptBlock(id,   scriptString);  
   
  }  
   
  DateTime   now=DateTime.Today;  
  ServerNowYear   =now.Year   ;  
   
  if(!Page.IsPostBack)  
  {    
   
  ServerYear=ServerNowYear   ;  
  ServerMonth=now.Month;  
  ServerDay=now.Day;  
  ServerMonthDays=GetNowMonthDays(ServerYear,ServerMonth);    
  ServerHour   =   DateTime.Now.Hour;  
  ServerMinute   =   DateTime.Now.Minute;  
  }  
  else    
  {  
  ServerYear=Convert.ToInt32(Request.Form[YearName]);  
  ServerMonth=Convert.ToInt32(Request.Form[MonthName]);    
  ServerDay=   Convert.ToInt32(Request.Form[DayName]);  
  ServerMonthDays=GetNowMonthDays(ServerYear,ServerMonth);  
  ServerHour   =   DateTime.Now.Hour;  
  ServerMinute   =   DateTime.Now.Minute;  
  }  
  }    
   
  //得到每个月的天数  
  private   int   GetNowMonthDays(int   ServerYear,int   ServerMonth)  
  {  
  int   ServerMonthDays=31;  
  if(ServerMonth==4||ServerMonth==6||ServerMonth==9||ServerMonth==11)  
  ServerMonthDays=30;  
  else   if(ServerMonth==02)    
  {  
  if((ServerYear%4==0   &&ServerYear%100!=0)   ||   ServerYear%400==0)  
  ServerMonthDays=29;  
  else   ServerMonthDays=28;    
  }  
  return   ServerMonthDays;  
  }  
   
  //填充  
  protected   void   FillOptions(int   StartValue,int   OptionsLength,int   SelectedOption)  
  {  
  for(int   j=StartValue;j<=OptionsLength;j++)    
  {  
  string   ShowOption;  
  if(j<10)  
  ShowOption="0"+j.ToString();  
  else   ShowOption=j.ToString();  
  if(j==SelectedOption)  
  Response.Write("   <OPTION   value="+ShowOption+"   selected>"+ShowOption+"</OPTION>");  
  else   Response.Write("   <OPTION   value="+ShowOption+"   >"+ShowOption+"</OPTION>");  
  }  
  }  
   
   
  #region   Web   Form   Designer   generated   code  
  override   protected   void   OnInit(EventArgs   e)  
  {  
  //  
  //   CODEGEN:该调用是   ASP.NET   Web   窗体设计器所必需的。  
  //  
  InitializeComponent();  
  base.OnInit(e);  
  }  
   
  ///   设计器支持所需的方法   -   不要使用  
  ///   代码编辑器修改此方法的内容。  
  ///   </summary>  
  private   void   InitializeComponent()  
  {  
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
  }  
  #endregion  
  }  
  }
0 0
原创粉丝点击