利用JS实现日期选择功能,包括润年2月的日数变更, 简单实用!

主要属性: Date

设计时图示: Eric的日期选择下拉列表小控件 

源代码:

using System;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

[assembly: TagPrefix(
"EFPlatform.WebControls""efp")]
namespace EFPlatform.WebControls
{
    [DefaultProperty(
"Date")]
    [ToolboxData(
"<{0}:DateDropDownList runat=server></{0}:DateDropDownList>")]
    
public class DateDropDownList : WebControl, INamingContainer
    {
        
#region Properties

        
#region Data(数据)
        
#region Date
        [Bindable(
true)]
        [Category(
"Data")]
        [DefaultValue(
"1900-1-1")]
        
public DateTime Date
        {
            
get
            {
                
this.GetDate();
                
return (ViewState["Date"== null? (new DateTime(190011)) : (DateTime)ViewState["Date"];
            }

            
set
            {
                ViewState[
"Date"= value;
            }
        }
        
#endregion

        
#region FirstYear
        [Category(
"Data")]
        [DefaultValue(
1900)]
        
public int FirstYear
        {
            
get
            {
                
return (ViewState["FirstYear"== null? 1900 : (int)ViewState["FirstYear"];
            }

            
set
            {
                ViewState[
"FirstYear"= value;
            }
        }
        
#endregion

        
#region LastYear
        [Category(
"Data")]
        
public int LastYear
        {
            
get
            {
                
return (ViewState["LastYear"== null? DateTime.Now.Year : (int)ViewState["LastYear"];
            }

            
set
            {
                ViewState[
"LastYear"= value;
            }
        }
        
#endregion
        
#endregion

        
#region Appearance(外观)
        
#region SelectCssClass
        [Category(
"Appearance")]
        
public string SelectCssClass
        {
            
get
            {
                
return (ViewState["SelectCssClass"== null? string.Empty : (string)ViewState["SelectCssClass"];
            }

            
set
            {
                ViewState[
"SelectCssClass"= value;
            }
        }
        
#endregion

        
#region YearTitle
        [Category(
"Appearance")]
        [DefaultValue(
"")]
        
public string YearTitle
        {
            
get
            {
                
return (ViewState["YearTitle"== null? "" : (string)ViewState["YearTitle"];
            }

            
set
            {
                ViewState[
"YearTitle"= value;
            }
        }
        
#endregion

        
#region MonthTitle
        [Category(
"Appearance")]
        [DefaultValue(
"")]
        
public string MonthTitle
        {
            
get
            {
                
return (ViewState["MonthTitle"== null? "" : (string)ViewState["MonthTitle"];
            }

            
set
            {
                ViewState[
"MonthTitle"= value;
            }
        }
        
#endregion

        
#region DayTitle
        [Category(
"Appearance")]
        [DefaultValue(
"")]
        
public string DayTitle
        {
            
get
            {
                
return (ViewState["DayTitle"== null? "" : (string)ViewState["DayTitle"];
            }

            
set
            {
                ViewState[
"DayTitle"= value;
            }
        }
        
#endregion
        
#endregion

        
#endregion

        
#region GetDate
        
private void GetDate()
        {
            
if(Page.IsPostBack)
            {
                
string strYear = Page.Request.Form[this.ClientID + "_Year"];
                
string strMonth = Page.Request.Form[this.ClientID + "_Month"];
                
string strDay = Page.Request.Form[this.ClientID + "_Day"];
                ViewState[
"Date"= DateTime.Parse(string.Format("{0}-{1}-{2}", strYear, strMonth, strDay));
            }
        }
        
#endregion

        
#region BuildJScript
        
private string BuildJScript()
        {
            StringBuilder sb 
= new StringBuilder();
            sb.Append(
" <script language="jscript"> <!-- ");
            sb.Append(
"function {0}_Day_Check() {{ ");
            sb.Append(
"var {0}_obj_Year = document.getElementById("{0}_Year"); ");
            sb.Append(
"var {0}_obj_Month = document.getElementById("{0}_Month"); ");
            sb.Append(
"if(parseInt({0}_obj_Month.value) == 2) {{ ");
            sb.Append(
"if(parseInt({0}_obj_Year.value) % 4 == 0) {{ ");
            sb.Append(
"{0}_Day_SetOptions(29); }} ");
            sb.Append(
"else {{ ");
            sb.Append(
"{0}_Day_SetOptions(28); }} }} ");
            sb.Append(
"else {{ ");
            sb.Append(
"switch(parseInt({0}_obj_Month.value)) {{ ");
            sb.Append(
"case 1: {0}_Day_SetOptions(31); break; ");
            sb.Append(
"case 3: {0}_Day_SetOptions(31); break; ");
            sb.Append(
"case 5: {0}_Day_SetOptions(31); break; ");
            sb.Append(
"case 7: {0}_Day_SetOptions(31); break; ");
            sb.Append(
"case 8: {0}_Day_SetOptions(31); break; ");
            sb.Append(
"case 10: {0}_Day_SetOptions(31); break; ");
            sb.Append(
"case 12: {0}_Day_SetOptions(31); break; ");
            sb.Append(
"case 4: {0}_Day_SetOptions(30); break; ");
            sb.Append(
"case 6: {0}_Day_SetOptions(30); break; ");
            sb.Append(
"case 9: {0}_Day_SetOptions(30); break; ");
            sb.Append(
"case 11: {0}_Day_SetOptions(30); break; ");
            sb.Append(
"default: break; }} }} }} ");
            sb.Append(
" ");
            sb.Append(
"function {0}_Day_SetOptions({0}_Day_Count) {{ ");
            sb.Append(
"var {0}_obj_Day = document.getElementById("{0}_Day"); ");
            sb.Append(
"var {0}_Day_SelectedDay; ");
            sb.Append(
"if({0}_obj_Day.value == "") {{ ");
            sb.Append(
"{0}_Day_SelectedDay = 1; }} ");
            sb.Append(
"else {{ ");
            sb.Append(
"{0}_Day_SelectedDay = parseInt({0}_obj_Day.value); }} ");
            sb.Append(
"if({0}_Day_SelectedDay > {0}_Day_Count) {{ ");
            sb.Append(
"{0}_Day_SelectedDay = {0}_Day_Count; }} ");
            sb.Append(
"{0}_obj_Day.length = 0; ");
            sb.Append(
"for(var i = 1; i <= {0}_Day_Count; i++) {{ ");
            sb.Append(
"{0}_obj_Day.options.add(new Option(i, i)); }} ");
            sb.Append(
"{0}_obj_Day.value = {0}_Day_SelectedDay; }} ");
            sb.Append(
"--> </script> ");
            
return string.Format(sb.ToString(), this.ClientID);
        }
        
#endregion

        
#region BuildHtmlElement
        
private string BuildHtmlElement()
        {
            StringBuilder sb 
= new StringBuilder();
            sb.AppendFormat(
" <select >
    }
}

相关文章:

  • 2022-12-23
  • 2021-08-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-11
  • 2021-10-09
猜你喜欢
  • 2022-12-23
  • 2021-11-17
  • 2021-10-15
  • 2021-10-02
  • 2022-12-23
  • 2022-01-14
相关资源
相似解决方案