using System; using Cambro.Web.QuickAdmin; using System.Web.UI.WebControls; using System.Web.UI; namespace SpecialDate { public class EditDateSpecial : EditControl, IDate, IResetable, IBindable, ILocal { private DropDownList Months; private DropDownList Years; public int StartYear = 1900; public int EndYear = 2010; private Calendar Cal; public DateTime StartDate; private string RealValue; public EditDateSpecial() : base() { Cal = new Calendar(); Months = new DropDownList(); Years = new DropDownList(); Months.SelectedIndexChanged += new EventHandler(ChangeMonths); Years.SelectedIndexChanged += new EventHandler(ChangeYears); Months.AutoPostBack = true; Years.AutoPostBack = true; this.Controls.Add(new LiteralControl("

")); this.Controls.Add(Months); this.Controls.Add(Years); this.Controls.Add(new LiteralControl("
")); this.Controls.Add(Cal); this.Controls.Add(new LiteralControl("

")); AddYears(); AddMonths(); } public new string textValue { get { return Cal.SelectedDate.ToString(); } set { Cal.SelectedDate = System.DateTime.Parse(value); } } public new void Bind(string bound) { try { if (bound == null || bound == "") { if (StartDate == new DateTime(0001,01,01)) { Cal.TodaysDate = System.DateTime.Now; Cal.SelectedDate = new DateTime(0001,01,01); } else { Cal.TodaysDate = StartDate; } RealValue = bound; } else { Cal.SelectedDate = System.DateTime.Parse(bound); Cal.TodaysDate = System.DateTime.Parse(bound); } } catch{} try { this.Months.Items.FindByValue(Cal.SelectedDate.Month.ToString()); this.Years.Items.FindByValue(Cal.SelectedDate.Year.ToString()); } catch{} } public void ChangeMonths(object o, EventArgs e) { Cal.TodaysDate = new DateTime(Cal.TodaysDate.Year,System.Int32.Parse(Months.SelectedItem.Value),Cal.TodaysDate.Day); } public void ChangeYears(object o, EventArgs e) { Cal.TodaysDate = new DateTime(System.Int32.Parse(Years.SelectedItem.Text),Cal.TodaysDate.Month,Cal.TodaysDate.Day); } private void AddMonths() { Months.Items.Add(new ListItem("January","1")); Months.Items.Add(new ListItem("February","2")); Months.Items.Add(new ListItem("March","3")); Months.Items.Add(new ListItem("April","4")); Months.Items.Add(new ListItem("May","5")); Months.Items.Add(new ListItem("June","6")); Months.Items.Add(new ListItem("July","7")); Months.Items.Add(new ListItem("August","8")); Months.Items.Add(new ListItem("September","9")); Months.Items.Add(new ListItem("October","10")); Months.Items.Add(new ListItem("November","11")); Months.Items.Add(new ListItem("December","12")); Months.Items.FindByValue(Cal.TodaysDate.Month.ToString()).Selected = true; } private void AddYears() { int Counter = StartYear; while (Counter <= EndYear) { Years.Items.Add(new ListItem(Counter.ToString(),Counter.ToString())); Counter++; } Years.Items.FindByText(Cal.TodaysDate.Year.ToString()).Selected = true; } protected override void Render(HtmlTextWriter w) { if (this.ParentAdmin.AdminMode == Admin.Mode.Edit && Editable == true || this.ParentAdmin.AdminMode == Admin.Mode.Add && Addable == true) { w.Write("" +Title+ ""); base.Render(w); w.Write(""); } else { w.Write("" +Title+ ""); try { if ((RealValue == null || RealValue == "") && Cal.SelectedDate == new DateTime(0001,01,01)) w.Write("[null]"); else if (Cal.SelectedDate != new DateTime(0001,01,01)) w.Write(Cal.SelectedDate.ToShortDateString()); } catch{} w.Write(""); } } } }