下拉的选择日期控件(user control ),功能完善,修改了bug

原创 2002年12月26日 13:48:00

YearMonthDayDownDropList.ascx:


<%@ Control Language="c#" AutoEventWireup="false"

Codebehind="YearMonthDayDownDropList.ascx.cs"

Inherits="micrm.Modules.YearMonthDayDownDropList"

TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
<table id="Table1" cellSpacing="0" cellPadding="0">
 <tr>
  <td><SELECT  id=<%=YearName%> onclick=<%=JavascriptFunName%>

style="WIDTH: 53px; HEIGHT: 61px" name=<%=YearName%>>
     <%
                    FillOptions(2000,ServerNowYear,ServerYear);%>
   </SELECT>
  <td>
   <DIV>年</DIV>
  </td>
  <td><SELECT id=<%=MonthName%>  style="WIDTH: 45px; HEIGHT:

61px" onclick=<%=JavascriptFunName%> name=<%=MonthName%>>
    <%
        FillOptions(1,12,ServerMonth);%>
   </SELECT>
  <td>
   <DIV>月</DIV>
  </td>
  <td><SELECT  id=<%=DayName%>  style="WIDTH: 45px; HEIGHT:

61px" name=<%=DayName%>>
    <%
    FillOptions(1,ServerMonthDays,ServerDay);  %>
   </SELECT></td>
  <td>
   <DIV>日</DIV>
  </td>
 </tr>
</table>

 

在YearMonthDayDownDropList.ascx.cs中:

namespace micrm.Modules
{
 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 YearMonthDay
  {
   get
   {
    return Request.Form[YearName]+Request.Form[MonthName]+Request.Form[DayName];
   }
 
  }
  protected    int ServerYear;  //服务器当前选择年
  protected    int ServerMonth;//服务器当前月
  protected    int ServerNowYear; //服务器当前年
  protected    int ServerDay;  //服务器当前天
  protected    int ServerMonthDays;//当前月天数
  protected   string  JavascriptFunName; //此user control发出的函数名称
  protected   string  YearName;  //此user control发出的年控件的名称
  protected   string  MonthName;//此user control发出的月控件的名称
  protected   string  DayName; //此user control发出的日控件的名称
  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); 
   }
   else
   {
    ServerYear=Convert.ToInt32(Request.Form[YearName]);
    ServerMonth=Convert.ToInt32(Request.Form[MonthName]);
    ServerDay= Convert.ToInt32(Request.Form[DayName]);
    ServerMonthDays=GetNowMonthDays(ServerYear,ServerMonth);
   }
  } 
  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
 }
}

<%@ Register TagPrefix="uc1" TagName="YearMonthDayDownDropList" Src="Modules/YearMonthDayDownDropList.ascx" %> <%@ Page language="c#" Codebehind="WebForm7.aspx.cs" AutoEventWireup="false" Inherits="micrm.WebForm7" %>

<?xml:namespace prefix = uc1 /><?xml:namespace prefix = asp />

JS实现生日选择下拉列表

相信大家浏览过、关注过格式各类的网站,也在其中的网站中有过注册!注册的时候有时候需要选择自己的出生日期,当然大部分人并不会注意其的实现过程。本人用JS简单实现下该小功能,希望对有用的着的朋友、小伙伴们...
  • u011407281
  • u011407281
  • 2015年01月12日 15:46
  • 3229

纯JS实现出生日期[年月日]下拉菜单

纯JS实现出生日期[年月日]下拉菜单 在制作网页时,可能需要给用户提供注册帐号页面,用户注册 设计很多信息,其中就有 关于出生日期的,出于用户体验,不想让用户手动输入,而HTML5的date,目...
  • ljheee
  • ljheee
  • 2016年04月16日 11:46
  • 7218

js实现下拉框联动选中日期(select 日期联动更改)

html代码
  • zh921112
  • zh921112
  • 2014年08月05日 18:17
  • 12449

下拉日期控件

  • 2007年06月27日 08:46
  • 14KB
  • 下载

asp.net下拉日期控件源码

  • 2007年04月15日 17:07
  • 181KB
  • 下载

asp.net 真正的下拉日期控件

  • 2010年06月29日 11:03
  • 21KB
  • 下载

Asp.net下拉日期控件源码及演示

  • 2009年02月28日 15:25
  • 182KB
  • 下载

日期控件 (下拉)JS

  • 2010年05月08日 16:11
  • 16KB
  • 下载

Android 中日期控件与下拉列表的使用

1、在一个EditText 中单击一下可以弹出日期对话框: private static int START; private int mYear; private int m...
  • nmsoftklb
  • nmsoftklb
  • 2013年09月30日 17:27
  • 4344

Asp.net下拉日期控件源码及演示

  • 2010年02月10日 11:16
  • 203KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:下拉的选择日期控件(user control ),功能完善,修改了bug
举报原因:
原因补充:

(最多只允许输入30个字)