?? datepicker.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 + -