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(" |
");
}
}
}
}