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 WebControls
... {
[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);
else
DayStyle.AddAttributesToRender(writer);
if (DayStyle.HorizontalAlign == HorizontalAlign.NotSet)
writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
writer.AddAttribute(HtmlTextWriterAttribute.Width, "14%");
writer.AddAttribute(HtmlTextWriterAttribute.Id, ID + "_day" + index.ToString());
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, "setvalue('" + ID + "'," + index +")");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.RenderEndTag(); //td
index++;
}
writer.RenderEndTag(); //tr
}
writer.RenderEndTag(); //table
writer.RenderEndTag(); //div
}
#endregion
"script"#region "script"
string key = "dropdowncalendar_script";
string script = @"
<script language =javascript>
function showCalendar(calendar)
{
var odate = document.getElementById(calendar+'_date');
if ( odate.style.visibility=='hidden' ){
var y = document.getElementById(calendar+'_yeartext').value;
var m = document.getElementById(calendar+'_monthtext').value;
display( calendar,y,m);
odate.style.visibility='visible';
odate.style.display = 'block';
}else{
odate.style.visibility='hidden';
odate.style.display = 'none';
}
}
function changemonth(calendar,par)
{
var omonth = document.getElementById(calendar+'_month');
var oyear = document.getElementById(calendar+'_year');
var m = omonth.innerText;
var y = oyear.innerText;
m = parseInt(m)+par;
if(parseInt(m)>12){
m = 1;
y = parseInt(y)+1;
} else if(parseInt(m)< 1) {
m = 12;
y = parseInt(y)-1;
}
display(calendar, y,m);
}
function daysInMonth(month,year)
{
var ds=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var n=ds[month];
if(month==1&&year%4==0) ++n;
return n;
}
function display(calendar,year,month)
{
var omonth = document.getElementById(calendar+'_month');
var oyear = document.getElementById(calendar+'_year');
oyear.innerText = year;
omonth.innerText = month;
var start=new Date(year,month-1,1).getDay();
var days=daysInMonth(month-1,year);
var pm = month-1,py = year;
if ( pm == 0 ){
pm = 12;
py = year-1;
}
var pd=daysInMonth(pm-1,py);
var day = calendar + '_day';
for(var i=0;i< start;i++){
var td = document.getElementById(day+i);
var d = pd-start+i+1;
td.innerHTML='<font color = #808080>'+d+'</font>';
td.title=d+'日';
}
for(var i= start+days; i< 42;i++){
var td = document.getElementById(day+i);
var d = i-start-days+1;
td.innerHTML='<font color = #808080>'+d+'</font>';
td.title=d+'日';
}
for(var i=1;i<=days;i++){
var td = document.getElementById( day +(start+i-1));
td.innerText=i;
td.title=year+'年'+ month+'月'+i+'日';
}
}
function validate(calendar)
{
var oyear = document.getElementById(calendar+'_yeartext');
var omonth = document.getElementById(calendar+'_monthtext');
var oday = document.getElementById(calendar+'_daytext');
var y = oyear.value;
var m = omonth.value;
var d = oday.value;
var today = new Date();
if ( isNaN(y)||y > 9999 || y< 1000){
y = today.getFullYear();
oyear.value = y;
}
if ( isNaN(m)|| m > 12 || y< 1){
m = today.getMonth();
omonth.value = m + 1;
}
if ( isNaN(d) || d < 1 || d > daysInMonth(m,y)){
d = 10;
oday.value = d;
}
}
function setvalue(calendar,index)
{
var y = document.getElementById(calendar+'_year').innerText;
var m = document.getElementById(calendar+'_month').innerText;
var d = document.getElementById(calendar+'_day'+index).innerText;
if ( parseInt(d) - 2 > index ) {
m = parseInt(m)-1;
if ( m == 0){
m = 12;
y = parseInt(y) - 1;
}
}else if (parseInt(d)+26<index ){
m=parseInt(m)+1;
if ( m == 13){
m = 1;
y = y + 1;
}
}
document.getElementById(calendar+'_yeartext').value = y;
document.getElementById(calendar+'_monthtext').value = m;
document.getElementById(calendar+'_daytext').value = d;
showCalendar(calendar);
}
</script>";
#endregion
}
}
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 WebControls
... {
[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);
else
DayStyle.AddAttributesToRender(writer);
if (DayStyle.HorizontalAlign == HorizontalAlign.NotSet)
writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
writer.AddAttribute(HtmlTextWriterAttribute.Width, "14%");
writer.AddAttribute(HtmlTextWriterAttribute.Id, ID + "_day" + index.ToString());
writer.AddAttribute(HtmlTextWriterAttribute.Onclick, "setvalue('" + ID + "'," + index +")");
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.RenderEndTag(); //td
index++;
}
writer.RenderEndTag(); //tr
}
writer.RenderEndTag(); //table
writer.RenderEndTag(); //div
}
#endregion
"script"#region "script"
string key = "dropdowncalendar_script";
string script = @"
<script language =javascript>
function showCalendar(calendar)
{
var odate = document.getElementById(calendar+'_date');
if ( odate.style.visibility=='hidden' ){
var y = document.getElementById(calendar+'_yeartext').value;
var m = document.getElementById(calendar+'_monthtext').value;
display( calendar,y,m);
odate.style.visibility='visible';
odate.style.display = 'block';
}else{
odate.style.visibility='hidden';
odate.style.display = 'none';
}
}
function changemonth(calendar,par)
{
var omonth = document.getElementById(calendar+'_month');
var oyear = document.getElementById(calendar+'_year');
var m = omonth.innerText;
var y = oyear.innerText;
m = parseInt(m)+par;
if(parseInt(m)>12){
m = 1;
y = parseInt(y)+1;
} else if(parseInt(m)< 1) {
m = 12;
y = parseInt(y)-1;
}
display(calendar, y,m);
}
function daysInMonth(month,year)
{
var ds=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var n=ds[month];
if(month==1&&year%4==0) ++n;
return n;
}
function display(calendar,year,month)
{
var omonth = document.getElementById(calendar+'_month');
var oyear = document.getElementById(calendar+'_year');
oyear.innerText = year;
omonth.innerText = month;
var start=new Date(year,month-1,1).getDay();
var days=daysInMonth(month-1,year);
var pm = month-1,py = year;
if ( pm == 0 ){
pm = 12;
py = year-1;
}
var pd=daysInMonth(pm-1,py);
var day = calendar + '_day';
for(var i=0;i< start;i++){
var td = document.getElementById(day+i);
var d = pd-start+i+1;
td.innerHTML='<font color = #808080>'+d+'</font>';
td.title=d+'日';
}
for(var i= start+days; i< 42;i++){
var td = document.getElementById(day+i);
var d = i-start-days+1;
td.innerHTML='<font color = #808080>'+d+'</font>';
td.title=d+'日';
}
for(var i=1;i<=days;i++){
var td = document.getElementById( day +(start+i-1));
td.innerText=i;
td.title=year+'年'+ month+'月'+i+'日';
}
}
function validate(calendar)
{
var oyear = document.getElementById(calendar+'_yeartext');
var omonth = document.getElementById(calendar+'_monthtext');
var oday = document.getElementById(calendar+'_daytext');
var y = oyear.value;
var m = omonth.value;
var d = oday.value;
var today = new Date();
if ( isNaN(y)||y > 9999 || y< 1000){
y = today.getFullYear();
oyear.value = y;
}
if ( isNaN(m)|| m > 12 || y< 1){
m = today.getMonth();
omonth.value = m + 1;
}
if ( isNaN(d) || d < 1 || d > daysInMonth(m,y)){
d = 10;
oday.value = d;
}
}
function setvalue(calendar,index)
{
var y = document.getElementById(calendar+'_year').innerText;
var m = document.getElementById(calendar+'_month').innerText;
var d = document.getElementById(calendar+'_day'+index).innerText;
if ( parseInt(d) - 2 > index ) {
m = parseInt(m)-1;
if ( m == 0){
m = 12;
y = parseInt(y) - 1;
}
}else if (parseInt(d)+26<index ){
m=parseInt(m)+1;
if ( m == 13){
m = 1;
y = y + 1;
}
}
document.getElementById(calendar+'_yeartext').value = y;
document.getElementById(calendar+'_monthtext').value = m;
document.getElementById(calendar+'_daytext').value = d;
showCalendar(calendar);
}
</script>";
#endregion
}
}
附组件 webcontrols.rar