软讯网络 > 编程语言 > .NET > C#.NET > asp.net下拉日期控件源码
【标 题】:asp.net下拉日期控件源码
【关键字】:
asp.net
【来 源】:http://blog.csdn.net/yiyun_/archive/2007/04/15/1565560.aspx
asp.net下拉日期控件源码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Meta.Web.Controls

...{
[ToolboxData("<{0}:DropDownCalendar runat=server></{0}:DropDownCalendar>"),
ToolboxBitmap(typeof(Meta.Web.Controls.DropDownCalendar), "Resource.Control.bmp")]
public class DropDownCalendar : WebControl

...{

"privatepro"#region"privatepro"
private TableItemStyle titleStyle;
private TableItemStyle dayStyle;
private TableItemStyle nextprevStyle;
private TableItemStyle dayHeaderStyle;
private TableItemStyle weekendDayStyle;
private TableItemStyle dateStyle;
private Style buttonStyle;
#endregion


"init"#region"init"
public DropDownCalendar()

...{
titleStyle = new TableItemStyle();
dayStyle = new TableItemStyle();
nextprevStyle = new TableItemStyle();
dayHeaderStyle = new TableItemStyle();
weekendDayStyle = new TableItemStyle();
dateStyle = new TableItemStyle();
buttonStyle = new Style();
}

protected override void OnLoad(EventArgs e)

...{
base.OnLoad(e);
if (Page != null)

...{
ClientScriptManager cs = Page.ClientScript;
Type cstype = Page.GetType();
if (!cs.IsClientScriptBlockRegistered(cstype, key))
cs.RegisterClientScriptBlock(cstype, key, script, false);

if ( Page.IsPostBack)

...{
string y = Page.Request.Form[ID + "_yeartext"];
string m = Page.Request.Form[ID + "_monthtext"];
string d = Page.Request.Form[ID + "_daytext"];

try...{
Value = DateTime.Parse(y + "-" + m + "-" + d);

} catch ...{
Value = DateTime.Today;
}
}
}
}
#endregion


"styles"#region"styles"
[Category("Styles"), PersistenceMode(PersistenceMode.InnerProperty)]

public TableItemStyle TitleStyle ...{ get ...{ return titleStyle; } }
[Category("Styles"), PersistenceMode(PersistenceMode.InnerProperty)]

public TableItemStyle DayStyle ...{ get ...{ return dayStyle; } }
[Category("Styles"), PersistenceMode(PersistenceMode.InnerProperty)]

public TableItemStyle NextPrevStyle ...{ get ...{ return nextprevStyle; } }
[Category("Styles"), PersistenceMode(PersistenceMode.InnerProperty)]

public TableItemStyle DayHeaderStyle ...{ get ...{ return dayHeaderStyle; } }
[Category("Styles"), PersistenceMode(PersistenceMode.InnerProperty)]

public TableItemStyle WeekendDayStyle ...{ get ...{ return weekendDayStyle; } }
[Category("Styles"), PersistenceMode(PersistenceMode.InnerProperty)]

public TableItemStyle DateStyle ...{ get ...{ return dateStyle; } }
[Category("Styles"), PersistenceMode(PersistenceMode.InnerProperty)]

public Style ButtonStyle ...{ get ...{ return buttonStyle; } }
#endregion


"pro"#region"pro"

[
Category("Behavior"),
DefaultValue(""),
PersistenceMode(PersistenceMode.Attribute),
]
public DateTime Value

...{
get

...{
Object obj = ViewState["Value"];
return ((obj == null) ? DateTime.Today : (DateTime)obj);
}


set ...{ ViewState["Value"] = value; }
}

#endregion


"render"#region "render"


public override void RenderBeginTag(HtmlTextWriter writer) ...{ }

public override void RenderEndTag(HtmlTextWriter writer) ...{ }
private void RenderSeparator(HtmlTextWriter writer, string s)

...{
writer.AddAttribute(HtmlTextWriterAttribute.Width, "10%");
writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(s);
writer.RenderEndTag(); //td
}
private void RenderInput(HtmlTextWriter writer,string id,string value)

...{
string val = value.Length == 1 ? "0" + value : value;
writer.AddAttribute(HtmlTextWriterAttribute.Width, "16%");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.AddAttribute(HtmlTextWriterAttribute.Id, id);
writer.AddAttribute(HtmlTextWriterAttribute.Name, id);
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderStyle, "none");
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderWidth, "0");
writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundColor, "transparent");
writer.AddAttribute(HtmlTextWriterAttribute.Type, "text");
writer.AddAttribute(HtmlTextWriterAttribute.Value, val);
writer.AddAttribute(HtmlTextWriterAttribute.Onchange, "validate('" + this.ID + "')");
writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, "center");
writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag(); //Input
writer.RenderEndTag(); //td
}
protected override void RenderContents(HtmlTextWriter writer)

...{
this.AddAttributesToRender(writer);
if (BorderStyle == BorderStyle.NotSet)
writer.AddStyleAttribute("border", "2px inset");
if ( Width == Unit.Empty)
writer.AddAttribute(HtmlTextWriterAttribute.Width, "1px");
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);

RenderInput(writer, ID + "_yeartext", Value.Year.ToString());
RenderSeparator(writer,"年");
RenderInput(writer, ID + "_monthtext", Value.Month.ToString());
RenderSeparator(writer, "月");
RenderInput(writer, ID + "_daytext", Value.Day.ToString());
RenderSeparator(writer, "日");
writer.AddAttribute(HtmlTextWriterAttribute.Width, "20%");
writer.AddAttribute(HtmlTextWriterAttribute.Align, "right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
ButtonStyle.AddAttributesToRender(writer);
writer.AddAttribute(HtmlTextWriterAttribute.Id, ID + "_button");
writer.AddAttribute(HtmlTextWriterAttribute.Type, "button");
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, "showCalendar('" + this.ID + "')");
writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "18px");
writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
writer.RenderBeginTag(HtmlTextWriterTag.Input);
writer.RenderEndTag(); //Input
writer.RenderEndTag(); //td
writer.RenderEndTag(); //tr
writer.RenderEndTag(); //table

if (this.DesignMode)
return;
DateStyle.AddAttributesToRender(writer);
if (DateStyle.Width == Unit.Empty)
writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "200px");
if (DateStyle.BorderStyle == BorderStyle.NotSet)
writer.AddStyleAttribute("border", "1px outset");
writer.AddAttribute(HtmlTextWriterAttribute.Id, ID + "_date");
//writer.AddAttribute("onmouseout", "showCalendar('" + this.ID + "',false)");
writer.AddStyleAttribute(HtmlTextWriterStyle.Position, "absolute");
writer.AddStyleAttribute(HtmlTextWriterStyle.Display, "none");
writer.AddStyleAttribute(HtmlTextWriterStyle.Visibility, "hidden");
writer.RenderBeginTag(HtmlTextWriterTag.Div);
writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
writer.AddAttribute(HtmlTextWriterAttribute.Height, "100%");
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderCollapse, "collapse");
writer.AddStyleAttribute(HtmlTextWriterStyle.Cursor, "hand");
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
TitleStyle.AddAttributesToRender(writer);
writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "7");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
writer.RenderBeginTag(HtmlTextWriterTag.Table);
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
NextPrevStyle.AddAttributesToRender(writer);
writer.RenderBeginTag(HtmlTextWriterTag.Td);//1td
writer.AddAttribute(HtmlTextWriterAttribute.Title, "转到上一个月");
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, "changemonth('"+ ID + "',-1)");
writer.RenderBeginTag(HtmlTextWriterTag.A); //1a
writer.Write("<");
writer.RenderEndTag(); //1a
writer.RenderEndTag(); //1td

writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
writer.AddAttribute(HtmlTextWriterAttribute.Width, "70%");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.AddAttribute(HtmlTextWriterAttribute.Id, ID + "_year");
writer.RenderBeginTag(HtmlTextWriterTag.Span);
writer.RenderEndTag();
writer.Write("年");
writer.AddAttribute(HtmlTextWriterAttribute.Id, ID + "_month");
writer.RenderBeginTag(HtmlTextWriterTag.Span);
writer.RenderEndTag();
writer.Write("月");
writer.RenderEndTag(); //td

NextPrevStyle.AddAttributesToRender(writer);
writer.AddAttribute(HtmlTextWriterAttribute.Align, "right");
writer.RenderBeginTag(HtmlTextWriterTag.Td);//1td
writer.AddAttribute(HtmlTextWriterAttribute.Title, "转到下一个月");
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, "changemonth('" + ID + "',1)");
writer.RenderBeginTag(HtmlTextWriterTag.A); //1a
writer.Write(">");
writer.RenderEndTag(); //1a
writer.RenderEndTag(); //1td
writer.RenderEndTag(); //tr
writer.RenderEndTag(); //table
writer.RenderEndTag(); //td
writer.RenderEndTag(); //tr

writer.RenderBeginTag(HtmlTextWriterTag.Tr);

string[] ws = ...{ "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", };
foreach (string s in ws)

...{
DayHeaderStyle.AddAttributesToRender(writer);
writer.AddAttribute(HtmlTextWriterAttribute.Scope, "col");
if (DayHeaderStyle.HorizontalAlign == HorizontalAlign.NotSet)
writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
writer.AddAttribute(HtmlTextWriterAttribute.Abbr, s);
writer.RenderBeginTag(HtmlTextWriterTag.Th);
writer.Write(s.Substring(2));
writer.RenderEndTag();
}
writer.RenderEndTag(); //tr
writer.WriteLine("<!--end:header-->");

int index = 0;

for (int i = 0; i < 6; i++)

...{
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
for (int j = 0; j < 7; j++)

...{
if (j == 0 || j == 6)
WeekendDayStyle.AddAttributesToRender(writer);
&nbs