62,041
社区成员
发帖
与我相关
我的任务
分享
[DefaultProperty("Value")]
public class DateTimePicker : WebControl
{
public const string DefaultDateFormat = "yyyy-MM-dd";
public const string DefaultClass = "Wdate";
public const string DefaultMy97DatePickerFolder = "~/My97DatePicker";
public const bool DefaultIsShowToday = true;
public DateTimePicker()
{
DateFormat = DefaultDateFormat;
CssClass = DefaultClass;
My97DatePickerFolder = DefaultMy97DatePickerFolder;
IsShowToday = DefaultIsShowToday;
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Text
{
get
{
return Value == null ? String.Empty : Value.Value.ToString(DateFormat ?? DefaultDateFormat);
}
set
{
Value = String.IsNullOrWhiteSpace(value) ? null :
(DateTime?)DateTime.ParseExact(value, DateFormat ?? DefaultDateFormat, null);
}
}
public string StartDate { get; set; }
[DefaultValue(false)]
public bool AlwaysUseStartDate { get; set; }
[DefaultValue(DayOfWeek.Sunday)]
public DayOfWeek FirstDayOfWeek { get; set; }
[DefaultValue(DefaultDateFormat)]
public string DateFormat { get; set; }
[DefaultValue(ErrorDealMode.Warning)]
public ErrorDealMode ErrorDealMode { get; set; }
public string MinDate { get; set; }
public string MaxDate { get; set; }
public DateTime? Value
{
get;
set;
}
public TimeSpan? TimeOfDay
{
get { return Value.HasValue ? (TimeSpan?)Value.Value.TimeOfDay : null; }
set
{
if (value == null) Value = null;
else Value = Value.GetValueOrDefault().Date + value;
}
}
[DefaultValue(DefaultClass)]
public override string CssClass
{
get;
set;
}
[DefaultValue(DefaultIsShowToday)]
public bool IsShowToday { get; set; }
[DefaultValue(DefaultMy97DatePickerFolder)]
public string My97DatePickerFolder { get; set; }
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
#if NoAjax
Page.ClientScript.RegisterClientScriptInclude(typeof(DateTimePicker), "My97DatePicker", ResolveUrl(My97DatePickerFolder.TrimEnd('/') + "/WdatePicker.js"));
#else
ScriptManager.RegisterClientScriptInclude(Page, typeof(DateTimePicker), "My97DatePicker", ResolveUrl(My97DatePickerFolder.TrimEnd('/') + "/WdatePicker.js"));
#endif
if (Page.IsPostBack)
{
Text = Page.Request.Form[UniqueID];
}
}
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Input;
}
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);
writer.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Type, "text");
if (!String.IsNullOrEmpty(CssClass)) writer.AddAttribute(HtmlTextWriterAttribute.Class, CssClass);
if (!String.IsNullOrEmpty(Text)) writer.AddAttribute(HtmlTextWriterAttribute.Value, Text);
string[] args = GenerateWdatePickerArgs();
if (args.Length > 0)
writer.AddAttribute("onfocus", String.Format("WdatePicker({{{0}}})", String.Join(",", args)));
else
writer.AddAttribute("onfocus", "WdatePicker()");
}
protected virtual string[] GenerateWdatePickerArgs()
{
List<string> args = new List<string>();
if (DateFormat != DefaultDateFormat && !String.IsNullOrEmpty(DateFormat)) args.Add(String.Format("dateFmt:'{0}'", DateFormat));
if (ErrorDealMode != 0) args.Add(String.Format("errDealMode:{0}", (int)ErrorDealMode));
if (FirstDayOfWeek != 0) args.Add(String.Format("firstDayOfWeek:{0}", (int)FirstDayOfWeek));
if (!String.IsNullOrEmpty(MinDate)) args.Add(String.Format("minDate:{0}", MinDate));
if (!String.IsNullOrEmpty(MaxDate)) args.Add(String.Format("maxDate:{0}", MaxDate));
if (IsShowToday != DefaultIsShowToday) args.Add(String.Format("isShowToday:{0}", IsShowToday ? "true" : "false"));
if (!String.IsNullOrEmpty(StartDate)) args.Add(String.Format("startDate:'{0}'", StartDate));
if (AlwaysUseStartDate) args.Add("alwaysUseStartDate:true");
return args.ToArray();
}
}
public enum ErrorDealMode
{
Warning,
Rollback,
PointOut
}