⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datepicker.cs

📁 非常不错的学校在线考试分析系统
💻 CS
字号:
// DatePicker.cs
//

namespace ASPNET.StarterKit.Communities
{
	using System;
	using System.Web.UI;
	using System.Web.UI.WebControls;
	using System.Globalization;

	/// <summary>
	/// Summary description for DatePicker.
	/// </summary>
	public class DatePicker : WebControl, INamingContainer
	{
    

		DropDownList dropMonth;
		DropDownList dropDay;
		DropDownList dropYear;
		//SWS - Begin: Adding ability to specify the years to display within the datepicker control
		int _yearsBefore = 5;
		int _yearsAfter = 5;
		//SWS - End: Adding ability to specify the years to display within the datepicker control
		
		public int Month
		{
			get 
			{ 
				if (ViewState["Month"] == null)
					return DateTime.Now.Month;
				else
					return (int)ViewState["Month"]; 
			}
			set { ViewState["Month"] = value; }
		}

		public int Day
		{
			get 
			{
				if (ViewState["Day"] == null)
					return DateTime.Now.Day;
				else 
					return (int)ViewState["Day"]; 
			}
			set { ViewState["Day"] = value; }
		}
        
		public int Year
		{
			get 
			{ 
				if (ViewState["Year"] == null)
					return DateTime.Now.Year;
				else
					return (int)ViewState["Year"]; 
			}
			set 
			{ 
				ViewState["Year"] = value; 
			}
		}

		public DateTime Date
		{
			get 
			{ 
				EnsureChildControls();
                
				int _year = Int32.Parse(dropYear.SelectedItem.Value);
				int _month = Int32.Parse(dropMonth.SelectedItem.Value);
				int _day = Int32.Parse(dropDay.SelectedItem.Value);
                
				if (_day > DateTime.DaysInMonth(_year, _month) )
					throw new ArgumentException("Invalid date!");
                
				return new DateTime
					( 
					_year,
					_month,
					_day
					);
			}
			set
			{
				Month = value.Month;
				Day = value.Day;
				Year = value.Year;
			}
		}

		//SWS - Begin: Adding ability to specify the years to display within the datepicker control
		public int YearsBefore
		{
			get { return _yearsBefore; }
			set 
			{ 
				if (value >= 0)
					_yearsBefore = value;
			}
		}

		public int YearsAfter
		{
			get { return _yearsAfter; }
			set 
			{ 
				if (value >= 0)
					_yearsAfter = value;
			}
		}
		//SWS - End: Adding ability to specify the years to display within the datepicker control
				

		protected override void CreateChildControls()
		{
			dropMonth = new DropDownList();
			Controls.Add(dropMonth);
        
			dropDay = new DropDownList();
			Controls.Add(dropDay);
            
			dropYear = new DropDownList();
			Controls.Add(dropYear);
 
			if (!Page.IsPostBack)
			{
				// Get a DateTimeFormatInfo object
				DateTimeFormatInfo objDateInfo = DateTimeFormatInfo.CurrentInfo;
            
				// Display Months
				for (int i=1;i<objDateInfo.MonthNames.Length;i++)
					dropMonth.Items.Add(new ListItem(objDateInfo.GetMonthName(i), i.ToString()));

				// Display Days
				for (int i=1;i<32;i++)
					dropDay.Items.Add(i.ToString());

				// Display Years
				//SWS - Begin: Adding ability to specify the years to display within the datepicker control
				for (int i=DateTime.Now.Year - YearsBefore;i<=DateTime.Now.Year + YearsAfter;i++)
					dropYear.Items.Add(i.ToString());
				//SWS - End: Adding ability to specify the years to display within the datepicker control
		

				dropMonth.Items.FindByValue(Month.ToString()).Selected = true;
				dropDay.Items.FindByValue(Day.ToString()).Selected = true;
				dropYear.Items.FindByValue(Year.ToString()).Selected = true;
			}    
        
		}


		protected override void Render(HtmlTextWriter tw)
		{
			// Get Date Parts
			string[] dateParts;
			try
			{
				DateTimeFormatInfo objDateInfo = DateTimeFormatInfo.CurrentInfo;
				
				dateParts = objDateInfo.ShortDatePattern.Split('/');
			}
			catch
			{
				dateParts = new string[]{"m","d","y"};
			}
            
			tw.RenderBeginTag(HtmlTextWriterTag.Table);
			tw.RenderBeginTag(HtmlTextWriterTag.Tr);
			tw.RenderBeginTag(HtmlTextWriterTag.Td);
			RenderDatePart(dateParts[0],tw);
			tw.RenderEndTag();

			tw.RenderBeginTag(HtmlTextWriterTag.Td);
			RenderDatePart(dateParts[1],tw);
			tw.RenderEndTag();

			tw.RenderBeginTag(HtmlTextWriterTag.Td);
			RenderDatePart(dateParts[2],tw);
			tw.RenderEndTag();

			tw.RenderEndTag(); // close row
			tw.RenderEndTag(); // close table
 
        
		}


		private void RenderDatePart(string datePart,HtmlTextWriter tw)
		{
			datePart = datePart.ToLower();
            
			if (datePart.StartsWith("m"))
				dropMonth.RenderControl(tw);
			else 
				if (datePart.StartsWith("d"))
				dropDay.RenderControl(tw);
			else
				dropYear.RenderControl(tw);
		}



	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -