📄 datepicker.cs
字号:
using System;
using System.ComponentModel;
using System.Reflection;
using System.Resources;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Sorke.Web.UI.WebControls
{
public enum ShowFormatEnum
{
NoLimit = 0,
Range = 1,
AfterToday = 2,
AfterDays = 3,
}
public enum DateLanguage
{
Chinese=0,
English=1,
}
[DesignerAttribute("Sorke.Web.UI.WebControls.DatePickerDesigner,Sorke.Web.UI.WebControls")]
[ToolboxDataAttribute("<{0}:DatePicker runat=server></{0}:DatePicker>")]
[DefaultPropertyAttribute("Date")]
public class DatePicker : WebControl, INamingContainer
{
private ResourceManager resources;
//private bool _rang;
private DateTime _mindate;
private DateTime _maxdate;
private ShowFormatEnum _showformat;
private int _afterdays;
private string g_strText = "";
private bool g_bReadOnly = true;
private string g_strImageUrl = "images/DatePicker.gif";
private bool _hasdropdown = true ;
private string _css=null;
private string _dateformat="YYYY-MM-DD";
private DateLanguage _language=DateLanguage.Chinese;
private string _upimage="images/up.gif";
private string _downimage="images/down.gif";
private TextBox g_TextBox = new TextBox();
public DatePicker()
{
base.PreRender += new EventHandler(this.PreRender);
}
[CategoryAttribute("Data")]
[DefaultValueAttribute("")]
[BrowsableAttribute(false)]
[DescriptionAttribute("返回日期型数据")]
public DateTime Date
{
get
{
try
{
DateTime.Parse(Text);
return DateTime.Parse(Text);
}
catch (Exception e)
{
throw new Exception(String.Concat("日期错误!", e.ToString()));
}
}
set
{
Text=value.ToShortDateString();
}
}
public DateLanguage Language
{
get
{
return _language;
}
set
{
_language=value;
}
}
public string UpImage
{
get
{
return _upimage;
}
set
{
_upimage=value;
}
}
public string DownImage
{
get
{
return _downimage;
}
set
{
_downimage=value;
}
}
public string SetDateFormat
{
get
{
return _dateformat;
}
set
{
_dateformat=value;
}
}
public string CSS
{
get
{
return _css;
}
set
{
_css=value;
}
}
[CategoryAttribute("Data")]
[DefaultValueAttribute("")]
[BrowsableAttribute(true)]
[DescriptionAttribute("是否以下拉列表方式显示月份选择")]
public bool HasDropDown
{
get
{
return _hasdropdown;
}
set
{
_hasdropdown=value;
}
}
[BrowsableAttribute(true)]
[DescriptionAttribute("日期字符串,格式为2004-01-01")]
[DefaultValueAttribute("")]
[CategoryAttribute("Data")]
public string Text
{
get
{
return g_strText;
}
set
{
try
{
string str = value;
if (str != "")
{
try
{
DateTime dateTime = DateTime.Parse(str);
string[] strs = new string[5];
int i = dateTime.Year;
strs[0] = i.ToString();
strs[1] = "-";
i = dateTime.Month;
strs[2] = i.ToString();
strs[3] = "-";
i = dateTime.Day;
strs[4] = i.ToString();
str = String.Concat(strs);
}
catch
{
}
}
this.g_TextBox.Text=str;
g_strText = str;
}
catch
{
g_strText = "";
}
}
}
[DefaultValueAttribute(true)]
[DescriptionAttribute("是否只读")]
[CategoryAttribute("Behavior")]
public bool ReadOnly
{
get
{
return g_bReadOnly;
}
set
{
g_bReadOnly = value;
}
}
[DefaultValueAttribute("~/DatePicker/DatePicker.gif")]
[DescriptionAttribute("设置按钮图片")]
[CategoryAttribute("Appearance")]
public string ImageUrl
{
get
{
return g_strImageUrl;
}
set
{
g_strImageUrl = value;
}
}
/* public bool Range
{
get
{
return _rang;
}
set
{
_rang = value;
}
}*/
public DateTime MinDate
{
get
{
return _mindate;
}
set
{
_mindate = value;
}
}
public DateTime MaxDate
{
get
{
return _maxdate;
}
set
{
_maxdate = value;
}
}
public ShowFormatEnum ShowFormat
{
get
{
ShowFormatEnum str;
if (base.ViewState["ShowFormat"] != null)
{
str = (ShowFormatEnum)base.ViewState["ShowFormat"];
}
else
{
str = _showformat;
}
return str;
}
set
{
_showformat = value;
base.ViewState["ShowFormat"] = _showformat;
}
}
public int AfterDays
{
get
{
return _afterdays;
}
set
{
_afterdays = value;
}
}
protected override void CreateChildControls()
{
Table table = new Table();
table.BorderWidth = Unit.Pixel(0);
table.CellPadding = 0;
table.CellSpacing = 0;
table.Width = base.Width;
table.Height = base.Height;
TableRow tableRow = new TableRow();
TableCell tableCell1 = new TableCell();
tableCell1.HorizontalAlign = HorizontalAlign.Center;
tableCell1.VerticalAlign = VerticalAlign.Middle;
TableCell tableCell2 = new TableCell();
tableCell2.Width = Unit.Pixel(1);
tableCell2.HorizontalAlign = HorizontalAlign.Center;
tableCell2.VerticalAlign = VerticalAlign.Middle;
TextBox txt = g_TextBox;
txt.ID="txt";
txt.Width = Unit.Percentage(100.0);
txt.Height = base.Height;
txt.Text = Text;
txt.ToolTip=base.ToolTip;
txt.ReadOnly=ReadOnly;
System.Web.UI.HtmlControls.HtmlImage btn=new System.Web.UI.HtmlControls.HtmlImage();
btn.ID="datepickerbtn";
btn.Src=ImageUrl;
tableCell1.Controls.Add(txt);
tableCell2.Controls.Add(btn);
tableRow.Controls.Add(tableCell1);
tableRow.Controls.Add(tableCell2);
table.Controls.Add(tableRow);
this.Controls.Add(table);
}
public new void PreRender(object sender, EventArgs e)
{
if (!base.Page.IsClientScriptBlockRegistered("clientScript"))
{
resources = new ResourceManager("Sorke.Web.UI.WebControls.DatePicker", base.GetType().Module.Assembly);
string str1 = resources.GetString("js");
if(_language==DateLanguage.Chinese)
{
str1=str1.Replace("setweeklanguage","\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\"");
str1=str1.Replace("setmonthlanguage","\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一\",\"十二\"");
}
else
{
str1=str1.Replace("setweeklanguage","\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"");
str1=str1.Replace("setmonthlanguage","\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"");
}
str1=str1.Replace("upimage",_upimage);
str1=str1.Replace("downimage",_downimage);
if (_css==null)
{
str1 = String.Concat(str1, resources.GetString("css"));
}
else
{
if (!base.Page.IsClientScriptBlockRegistered("CSSclient"))
{
base.Page.RegisterClientScriptBlock("CSSclient", String.Format("<link rel=\"STYLESHEET\" type=\"text/css\" href=\"{0}\">",_css));
}
}
base.Page.RegisterClientScriptBlock("clientScript", str1);
}
TextBox txt=(TextBox)this.FindControl("txt");
System.Web.UI.HtmlControls.HtmlImage btn=(System.Web.UI.HtmlControls.HtmlImage)this.FindControl("datepickerbtn");
if(base.Enabled==true)
{
string str2 = "";
switch (ShowFormat)
{
case ShowFormatEnum.NoLimit:
//str2 = String.Concat("event,\'", txt.ClientID, "\',",HasDropDown.ToString().ToLower(),",\'yyyy-mm-dd\')");
str2=String.Format("event,'{0}',{1}, '{2}')",txt.ClientID,HasDropDown.ToString().ToLower(),SetDateFormat.ToLower());
break;
case ShowFormatEnum.AfterDays:
//str2 = String.Concat(new object[]{"event,\'", txt.ClientID, "\',",HasDropDown.ToString().ToLower(),",\'yyyy-mm-dd\', new Date(),new Date().addDays(", (AfterDays - 1), "))"});
str2 = String.Concat(new object[]{"event,\'", txt.ClientID, "\',",HasDropDown.ToString().ToLower(),",\'",SetDateFormat.ToLower(),"\', new Date(),new Date().addDays(", (AfterDays - 1), "))"});
break;
case ShowFormatEnum.AfterToday:
//str2 = String.Concat("event,\'", txt.ClientID, "\',",HasDropDown.ToString().ToLower(),",'yyyy-mm-dd\', new Date())");
str2 = String.Concat("event,\'", txt.ClientID, "\',",HasDropDown.ToString().ToLower(),",'",SetDateFormat.ToLower(),"', new Date())");
break;
case ShowFormatEnum.Range:
//str2 = String.Concat(new object[]{"event,\'", txt.ClientID, "\',",HasDropDown.ToString().ToLower(),",'yyyy-mm-dd\',new Date(", MinDate.Year, ",", (MinDate.Month - 1), ",", MinDate.Day, "),new Date(", MaxDate.Year, ",", (MaxDate.Month - 1), ",", MaxDate.Day, "))"});
str2 = String.Concat(new object[]{"event,\'", txt.ClientID, "\',",HasDropDown.ToString().ToLower(),",'",SetDateFormat.ToLower(),"',new Date(", MinDate.Year, ",", (MinDate.Month - 1), ",", MinDate.Day, "),new Date(", MaxDate.Year, ",", (MaxDate.Month - 1), ",", MaxDate.Day, "))"});
break;
}
btn.Attributes["onclick"] = String.Concat("g_Calendar.show(", str2, "; return false;");
btn.Attributes["onmouseover"] = "if (timeoutId) clearTimeout(timeoutId);return true;";
btn.Attributes["onmouseout"] = "if (timeoutDelay) calendarTimeout();";
}
else
{
txt.Enabled=false;
btn.Visible=false;
}
}
protected override void OnLoad(EventArgs e)
{
base.EnsureChildControls();
Text = g_TextBox.Text;
base.OnLoad(e);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -