📄 dropdowncalendar.cs
字号:
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
{
#region"privatepro"
private TableItemStyle titleStyle;
private TableItemStyle dayStyle;
private TableItemStyle nextprevStyle;
private TableItemStyle dayHeaderStyle;
private TableItemStyle weekendDayStyle;
private TableItemStyle dateStyle;
private Style buttonStyle;
#endregion
#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
#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
#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
#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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -