⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inputcalendar.cs

📁 测试控件 测试控件
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Collections;
using System.Collections.Specialized;


namespace WebControlLibrary
{
	/// <summary>
	/// InputCalendar 的摘要说明。
	/// 日历选择控件(可能出现与用页javascript函数重名或Id重复的问题)
	/// 2.0.0(解决了会被select遮挡的问题)
	/// </summary>
	[DefaultProperty("Text"), 
		ToolboxData("<{0}:InputCalendar runat=server></{0}:InputCalendar>")]
	public class InputCalendar : System.Web.UI.WebControls.WebControl, IPostBackDataHandler
	{
		//private string size;
		private string size;
	
		[Bindable(true), 
			Category("Appearance"), 
			DefaultValue("")] 
		public string Text 
		{
			get
			{
				if (ViewState["Text"] != null)
				{
					return ViewState["Text"].ToString();
				}
				else
				{
					return null;
				}
			}

			set
			{
				ViewState["Text"] = value;
			}
		}

		[Bindable(true), 
		Category("Appearance"), 
		DefaultValue("")] 
		public string Size
		{
			get
			{
				return size;
			}

			set
			{
				size = value;
			}
		}

		/// <summary> 
		/// 将此控件呈现给指定的输出参数。
		/// </summary>
		/// <param name="output"> 要写出到的 HTML 编写器 </param>
		protected override void Render(HtmlTextWriter output)
		{
			output.AddAttribute(HtmlTextWriterAttribute.Id,this.ID);
			output.AddAttribute(HtmlTextWriterAttribute.Name,this.ID);
			if (this.CssClass != ""){output.AddAttribute(HtmlTextWriterAttribute.Class,this.CssClass);}
			if (this.Text != "" && this.Text != null){output.AddAttribute(HtmlTextWriterAttribute.Value,this.Text);}
			if (this.Size != "" && this.Size != null){output.AddAttribute(HtmlTextWriterAttribute.Size,this.Size);}
			output.AddAttribute(HtmlTextWriterAttribute.Style,"cursor:hand");
			output.AddAttribute(HtmlTextWriterAttribute.Type,"text");
			output.AddAttribute(HtmlTextWriterAttribute.ReadOnly,"true");
			output.AddAttribute(HtmlTextWriterAttribute.Onclick,"javascript:this.focus()");
			output.AddAttribute("onFocus","fPopCalendar(this,this,PopCal); return false;");
			output.RenderBeginTag(HtmlTextWriterTag.Input);
			output.RenderEndTag();

			if(!this.Page.IsClientScriptBlockRegistered("clientScript"))
			{
				output.WriteLine("<script language=\"JavaScript\">");
				output.WriteLine("var gdCtrl = new Object();");
				output.WriteLine("var gcGray = \"#808080\";");			//非当前月应有日期字的颜色
				output.WriteLine("var gcToggle = \"highlight\";");		//鼠标所在日期单元格的底色
				output.WriteLine("var gcBG = \"threedface\";");			//日历背景色
				output.WriteLine("var gMonths = new Array(\"一月\",\"二月\",\"三月\",\"四月\",\"五月\",\"六月\",\"七月\",\"八月\",\"九月\",\"十月\",\"十一月\",\"十二月\");");	

				output.WriteLine("var gdCurDate = new Date();");				//gdCurDate--当前日期
				output.WriteLine("var giYear = gdCurDate.getFullYear();");		//giYear--当前年份
				output.WriteLine("var giMonth = gdCurDate.getMonth()+1;");		//giMonth--当前月份(因为getMonth()返回的是0-11间的整数,故当前月要加1)
				output.WriteLine("var giDay = gdCurDate.getDate();");			//giDay--当前日
				output.WriteLine("var sxYear = giYear;");						//sxYear--所选年份
				output.WriteLine("var sxMonth = giMonth;");						//sxMonth--所选月份
				output.WriteLine("var sxDay = giDay;");							//sxDay--所选日
				output.WriteLine("var sxDatestr = gdCtrl.value;");				//以前所选日期

				output.WriteLine("if (sxDatestr != \"\"){");
				output.WriteLine("var sxDate = new Date(sxDatestr);");
				output.WriteLine("sxYear = sxDate.getFullYear();");
				output.WriteLine("}");

				output.WriteLine("var VicPopCal = new Object();");

				#region 鼠标异动到某对象上的一系列函数
				output.WriteLine("function mouseover(obj){");
				output.WriteLine("obj.style.borderTop = 'buttonshadow 1px solid';");
				output.WriteLine("obj.style.borderLeft = 'buttonshadow 1px solid';");
				output.WriteLine("obj.style.borderRight = 'buttonhighlight 1px solid';");
				output.WriteLine("obj.style.borderBottom = 'buttonhighlight 1px solid';");
				output.WriteLine("}");

				
				output.WriteLine("function mouseout(obj){");
				output.WriteLine("obj.style.borderTop = 'buttonhighlight 1px solid';");
				output.WriteLine("obj.style.borderLeft = 'buttonhighlight 1px solid';");
				output.WriteLine("obj.style.borderRight = 'buttonshadow 1px solid';");
				output.WriteLine("obj.style.borderBottom = 'buttonshadow 1px solid';");
				output.WriteLine("}");

				output.WriteLine("function mousedown(obj){");
				output.WriteLine("obj.style.borderTop = 'buttonshadow 1px solid';");
				output.WriteLine("obj.style.borderLeft = 'buttonshadow 1px solid';");
				output.WriteLine("obj.style.borderRight = 'buttonhighlight 1px solid';");
				output.WriteLine("obj.style.borderBottom = 'buttonhighlight 1px solid';");
				output.WriteLine("}");

				output.WriteLine("function mouseup(obj){");
				output.WriteLine("obj.style.borderTop = 'buttonhighlight 1px solid';");
				output.WriteLine("obj.style.borderLeft = 'buttonhighlight 1px solid';");
				output.WriteLine("obj.style.borderRight = 'buttonshadow 1px solid';");
				output.WriteLine("obj.style.borderBottom = 'buttonshadow 1px solid';");
				output.WriteLine("}");
				#endregion

				#region 日历操作的一系列函数

				output.WriteLine("function fPopCalendar(popCtrl, dateCtrl, popCal){");
  				output.WriteLine("parent.event.cancelBubble=true;");
				output.WriteLine("VicPopCal = popCal;");
				output.WriteLine("gdCtrl = dateCtrl;");
				output.WriteLine("fSetYearMon(giYear, giMonth);");
				output.WriteLine("var point = fGetXY(popCtrl);");
				output.WriteLine("with (VicPopCal.style) {left = point.x;top  = point.y+popCtrl.offsetHeight+1;visibility = 'visible';}");
				output.WriteLine("VicPopCal.focus();");
				output.WriteLine("}");

				output.WriteLine("function fSetDate(iYear, iMonth, iDay){");
				output.WriteLine("if ((iYear == 0) && (iMonth == 0) && (iDay == 0)){");
				output.WriteLine("gdCtrl.value = \"\";");
				output.WriteLine("}");
				output.WriteLine("else{");
				output.WriteLine("if (iMonth < 10){iMonth = \"0\"+iMonth;}"); //规格化时间
				output.WriteLine("if (iDay < 10){iDay = \"0\"+iDay;}");
				output.WriteLine("gdCtrl.value = iYear+\"-\"+iMonth+\"-\"+iDay;");	
				output.WriteLine("}");
				output.WriteLine("VicPopCal.style.visibility = \"hidden\";");
				output.WriteLine("}");

				output.WriteLine("function fSetSelected(aCell){");
				output.WriteLine("var iOffset = 0;");
				output.WriteLine("var iYear = parseInt(document.all.tbSelYear.value);");
				output.WriteLine("var iMonth = parseInt(document.all.tbSelMonth.value);");
				output.WriteLine("aCell.bgColor = gcBG;");
				output.WriteLine("with (aCell.children[\"cellText\"]){");
				output.WriteLine("var iDay = parseInt(innerText);");
				output.WriteLine("if (color==gcGray){iOffset = (Victor<10)?-1:1;}");
				output.WriteLine("iMonth += iOffset;");
				output.WriteLine("if (iMonth<1) {	iYear--; iMonth = 12;}else{if (iMonth>12){iYear++;iMonth = 1;}}");
				output.WriteLine("}");
				output.WriteLine("fSetDate(iYear, iMonth, iDay);");
				output.WriteLine("}");

				output.WriteLine("function Point(iX, iY){this.x = iX;this.y = iY;}");

				output.WriteLine("function fBuildCal(iYear, iMonth){");
				output.WriteLine("var aMonth=new Array();");
				output.WriteLine("for(i=1;i<7;i++){aMonth[i]=new Array(i);}");
				output.WriteLine("var dCalDate=new Date(iYear, iMonth-1, 1);");
				output.WriteLine("var iDayOfFirst=dCalDate.getDay();");
				output.WriteLine("var iDaysInMonth=new Date(iYear, iMonth, 0).getDate();");
				output.WriteLine("var iOffsetLast=new Date(iYear, iMonth-1, 0).getDate()-iDayOfFirst+1;");
				output.WriteLine("var iDate = 1;");
				output.WriteLine("var iNext = 1;");
				output.WriteLine("for (d = 0; d < 7; d++){aMonth[1][d] = (d<iDayOfFirst)?-(iOffsetLast+d):iDate++;}");
				output.WriteLine("for (w = 2; w < 7; w++){for (d = 0; d < 7; d++){aMonth[w][d] = (iDate<=iDaysInMonth)?iDate++:-(iNext++);}}");
				output.WriteLine("return aMonth;");
				output.WriteLine("}");
		
	
				output.WriteLine("function fDrawCal(iYear, iMonth, iDay, iCellWidth, iDateTextSize) {");
				output.WriteLine("var WeekDay = new Array(\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\");");
  				output.WriteLine("var styleTD = \" bgcolor='\"+gcBG+\"' width='\"+iCellWidth+\"' bordercolor='\"+gcBG+\"' valign='middle' align='center' style='font-size: 12px;background: buttonface;border-top: buttonhighlight 1px solid;border-left: buttonhighlight 1px solid;border-right: buttonshadow 1px solid;	border-bottom: buttonshadow 1px solid;\";");
				output.WriteLine("with (document) {");
				output.WriteLine("write(\"<tr align='center'>\");");
				output.WriteLine("for(i=0; i<7; i++){write(\"<td height='20' \"+styleTD+\"color:#990099' >\" + WeekDay[i] + \"</td>\");}");
				output.WriteLine("write(\"</tr>\");");
				output.WriteLine("for (w = 1; w < 7; w++) {");
				output.WriteLine("write(\"<tr align='center'>\");");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -