日历控件源码开放--适用于ASP.NET 1.1
截图如下:
源码如下:
//-----------------------------------------------------------------------------------------------------------------------
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Collections.Specialized;
/**//*******************************************************************
* 功能:实现单选日历
*
* 时间:2004-11
* 作者:iceberg
* 使用:
* 属性:
* 备注:目前并未实现日历的样式定义,有时间的话我会加上去:)
*********************************************************************/
namespaceKSI.WebControls
{
/**////<summary>///通过一个弹出窗口让用户选择一个日期
///</summary>
publicclassCalendar : Control, IPostBackDataHandler
{
user_define_variable_property#regionuser_define_variable_property
//输出用的Html代码privatestring_sOutput_Html="";
privatestring_sJavaScript="";
//按钮和文本框的样式名privatestring_TextBoxClass,_ButtonClass;
//是否使用默认日期privatebool_DefaultDate=false;
//默认日期privatestring_Text="";
//全球唯一标识码,用于在客户端注册JavaScript脚本块privateconststring_sJavaScript_ID="{d13646d6-4dca-4366-bcb4-b1bd23c035ad}";
/**////<summary>///文本框的样式:Class格式
///</summary>
publicstringTextBoxClass
{
set{ _TextBoxClass=value; }get{return_TextBoxClass; } }
/**////<summary>///按钮的样式:Class格式
///</summary>
publicstringButtonClass
{
set{ _ButtonClass=value; }get{return_ButtonClass; } }
/**////<summary>///输入的日期的值
///</summary>
publicstringText
{
set{ _Text=value;}get{return_Text; } }
/**////<summary>///是否使用默认值。默认值为当前日期
///</summary>
publicboolDefaultDate
{
set{ _DefaultDate=value;}get{return_DefaultDate; } }
#endregion
user_define_function#regionuser_define_function
//生成输出到Htm的JavaScript脚本函数privatevoid_MakeJavaScript()
{
_sJavaScript+="<Script Language=\"javascript\">\n";
_sJavaScript+="<!--\n";
_sJavaScript+="document.write(\"<div id=meizzCalendarLayer style='position: absolute; z-index: 9999; width: 144; height: 193; display: none'>\");\n";
_sJavaScript+="document.write(\"<iframe name=meizzCalendarIframe scrolling=no frameborder=0width=100%height=100%></iframe></div>\");\n";
_sJavaScript+="function writeIframe()\n";
_sJavaScript+="{\n";
_sJavaScript+="var strIframe = \"<html><head><meta http-equiv='Content-Type'content='text/html; charset=gb2312'><style>\"+\n";
_sJavaScript+="\"*{font-size: 12px; font-family: 宋体}\"+\n";
_sJavaScript+="\".bg{ color: \"+ WebCalendar.lightColor +\"; cursor:default; background-color: \"+ WebCalendar.darkColor +\";}\"+\n";
_sJavaScript+="\"table#tableMain{ width:142; height:180;}\"+\n";
_sJavaScript+="\"table#tableWeek td{ color: \"+ WebCalendar.lightColor +\";}\"+\n";
_sJavaScript+="\"table#tableDay td{ font-weight: bold;}\"+\n";
_sJavaScript+="\"td#meizzYearHead, td#meizzYearMonth{color: \"+WebCalendar.wordColor +\"}\"+\n";
_sJavaScript+="\".out{ text-align: center; border-top: 1px solid \"+ WebCalendar.DarkBorder +\"; border-left: 1px solid \"+ WebCalendar.DarkBorder +\";\"+\n";
_sJavaScript+="\"border-right: 1px solid \"+ WebCalendar.lightColor +\"; border-bottom: 1px solid \"+ WebCalendar.lightColor +\";}\"+\n";
_sJavaScript+="\".over{ text-align: center; border-top: 1px solid #FFFFFF; border-left: 1px solid #FFFFFF;\"+\n";
_sJavaScript+="\"border-bottom: 1px solid \"+ WebCalendar.DarkBorder +\"; border-right: 1px solid \"+ WebCalendar.DarkBorder +\"}\"+\n";
_sJavaScript+="\"input{ border: 1px solid \"+ WebCalendar.darkColor +\"; padding-top: 1px; height:18; cursor: hand;\"+\n";
_sJavaScript+="\"color:\"+ WebCalendar.wordColor +\"; background-color: \"+ WebCalendar.btnBgColor +\"}\"+\n";
_sJavaScript+="\"</style></head><body onselectstart='return false'style='margin: 0px'oncontextmenu='return false'><form name=meizz>\";\n";
_sJavaScript+="if (WebCalendar.drag){ strIframe += \"<scr\"+\"ipt language=javascript>\"+\n";
_sJavaScript+="\"var drag=false, cx=0, cy=0, o=parent.WebCalendar.calendar; function document.onmousemove(){\"+\n";
_sJavaScript+="\"if(parent.WebCalendar.drag&&drag){if(o.style.left=='')o.style.left=0;if(o.style.top=='')o.style.top=0;\"+\n";
_sJavaScript+="\"o.style.left=parseInt(o.style.left)+window.event.clientX-cx;\"+\n";
_sJavaScript+="\"o.style.top=parseInt(o.style.top)+window.event.clientY-cy;}}\"+\n";
_sJavaScript+="\"function document.onkeydown(){switch(window.event.keyCode){case27: parent.hiddenCalendar();break;\"+\n";
_sJavaScript+="\"case37: parent.prevM();break;case38: parent.prevY();break;case39: parent.nextM();break;case40: parent.nextY();break;\"+\n";
_sJavaScript+="\"case84: document.forms[0].today.click();break;}window.event.keyCode=0; window.event.returnValue=false;}\"+\n";
_sJavaScript+="\"function dragStart(){cx=window.event.clientX; cy=window.event.clientY; drag=true;}</scr\"+\"ipt>\"}\n";
_sJavaScript+="strIframe += \"<select name=tmpYearSelect onblur='parent.hiddenSelect(this)'style='z-index:1;position:absolute;top:3;left:18;display:none'\"+\n";
_sJavaScript+="\"onchange='parent.WebCalendar.thisYear =this.value; parent.hiddenSelect(this); parent.writeCalendar();'></select>\"+\n";
_sJavaScript+="\"<select name=tmpMonthSelect onblur='parent.hiddenSelect(this)'style='z-index:1; position:absolute;top:3;left:74;display:none'\"+\n";
_sJavaScript+="\"onchange='parent.WebCalendar.thisMonth=this.value; parent.hiddenSelect(this); parent.writeCalendar();'></select>\"+\n";
_sJavaScript+="\"<table id=tableMainclass=bg border=0cellspacing=2cellpadding=0>\"+\n";
_sJavaScript+="\"<tr><td width=140height=19bgcolor='\"+ WebCalendar.lightColor +\"'>\"+\n";
_sJavaScript+="\"<table width=140id=tableHead border=0cellspacing=1cellpadding=0><tr align=center>\"+\n";
_sJavaScript+="\"<td width=15height=19class=bg title='向前翻 1 月快捷键:←'style='cursor: hand'onclick='parent.prevM()'><b><</b></td>\"+\n";
_sJavaScript+="\"<td width=60id=meizzYearHead title='点击此处选择年份'onclick='parent.funYearSelect(parseInt(this.innerText, 10))'\"+\n";
_sJavaScript+="\"onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'\"+\n";
_sJavaScript+="\"onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'></td>\"+\n";
_sJavaScript+="\"<td width=50id=meizzYearMonth title='点击此处选择月份'onclick='parent.funMonthSelect(parseInt(this.innerText, 10))'\"+\n";
_sJavaScript+="\"onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'\"+\n";
_sJavaScript+="\"onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'></td>\"+\n";
_sJavaScript+="\"<td width=15class=bg title='向后翻 1 月快捷键:→'onclick='parent.nextM()'style='cursor: hand'><b>></b></td></tr></table>\"+\n";
_sJavaScript+="\"</td></tr><tr><td height=20><table id=tableWeek border=1width=140cellpadding=0cellspacing=0\";\n";
_sJavaScript+="if(WebCalendar.drag){strIframe += \"onmousedown='dragStart()'onmouseup='drag=false'onmouseout='drag=false'\";}\n";
_sJavaScript+="strIframe += \"borderColorLight='\"+ WebCalendar.darkColor +\"'borderColorDark='\"+ WebCalendar.lightColor +\"'>\"+\n";
_sJavaScript+="\"<tr align=center><td height=20>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr></table>\"+\n";
_sJavaScript+="\"</td></tr><tr><td valign=top width=140bgcolor='\"+ WebCalendar.lightColor +\"'>\"+\n";
_sJavaScript+="\"<table id=tableDay height=120width=140border=0cellspacing=1cellpadding=0>\";\n";
_sJavaScript+="for(var x=0; x<5; x++){ strIframe += \"<tr>\";\n";
_sJavaScript+="for(var y=0; y<7; y++) strIframe += \"<tdclass=outid='meizzDay\"+ (x*7+y) +\"'></td>\"; strIframe += \"</tr>\";}\n";
_sJavaScript+="strIframe += \"<tr>\";\n";
_sJavaScript+="for(var x=35; x<39; x++) strIframe += \"<tdclass=outid='meizzDay\"+ x +\"'></td>\";\n";
_sJavaScript+="strIframe +=\"<td colspan=3class=outtitle='\"+ WebCalendar.regInfo +\"'><input style='background-color: \"+\n";_sJavaScript+="WebCalendar.btnBgColor +\";cursor: hand; padding-top: 4px; width:100%; height:100%; border:0'οnfοcus='this.blur()'\"+\n";_sJavaScript+="\"type=button value=' 关闭'onclick='parent.hiddenCalendar()'></td></tr></table>\"+\n";
_sJavaScript+="\"</td></tr><tr><td height=20width=140bgcolor='\"+ WebCalendar.lightColor +\"'>\"+\n";
_sJavaScript+="\"<table border=0cellpadding=1cellspacing=0width=140>\"+\n";
_sJavaScript+="\"<tr><td><input name=prevYear title='向前翻 1 年快捷键:↑'onclick='parent.prevY()'type=button value='<<'\"+\n";
_sJavaScript+="\"onfocus='this.blur()'style='meizz:expression(this.disabled=parent.WebCalendar.thisYear==1000)'><input\"+\n";
_sJavaScript+="\"onfocus='this.blur()'name=prevMonth title='向前翻 1 月快捷键:←'onclick='parent.prevM()'type=button value='< '>\"+\n";
_sJavaScript+="\"</td><td align=center><input name=today type=button value='今天'onfocus='this.blur()'style='width: 50'title='当前日期快捷键:T'\"+\n";
_sJavaScript+="\"onclick="+ @"\"+"\""+"parent.returnDate(new Date().getDate() +'/'+ (new Date().getMonth() +1) +'/'+ new Date().getFullYear())";
//" οnclick= \ " parent.returnDate(new Date().getDate() +'/'+ (new Date().getMonth() +1) +'/'+ new Date().getFullYear())_sJavaScript+=@"\"+"\""+">"+"\"+\n";
//\ " > " +_sJavaScript+="\"</td><td align=right><input title='向后翻 1 月快捷键:→'name=nextMonth onclick='parent.nextM()'type=button value=' >'\"+\n";
_sJavaScript+="\"onfocus='this.blur()'><input name=nextYear title='向后翻 1 年快捷键:↓'onclick='parent.nextY()'type=button value='>>'\"+\n";
_sJavaScript+="\"onfocus='this.blur()'style='meizz:expression(this.disabled=parent.WebCalendar.thisYear==9999)'></td></tr></table>\"+\n";
_sJavaScript+="\"</td></tr><table></form></body></html>\";\n";
_sJavaScript+="with(WebCalendar.iframe)\n";
_sJavaScript+="{\n";
_sJavaScript+="document.writeln(strIframe); document.close();\n";
_sJavaScript+="for(var i=0; i<39; i++)\n";
_sJavaScript+="{\n";
_sJavaScript+="WebCalendar.dayObj[i] = eval(\"meizzDay\"+ i);\n";
_sJavaScript+="WebCalendar.dayObj[i].onmouseover = dayMouseOver;\n";
_sJavaScript+="WebCalendar.dayObj[i].onmouseout = dayMouseOut;\n";
_sJavaScript+="WebCalendar.dayObj[i].onclick = returnDate;\n";
_sJavaScript+="}\n";
_sJavaScript+="}\n";
_sJavaScript+="}\n";
_sJavaScript+="function WebCalendar() //初始化日历的设置\n";
_sJavaScript+="{\n";
_sJavaScript+="this.regInfo = \"请单击选择日期 关闭的快捷键:[Esc]\";\n";
_sJavaScript+="this.regInfo += \"Ver1.0:FengXq Email:Fpsky2000@163.com\";\n";
_sJavaScript+="this.daysMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);\n";
_sJavaScript+="this.day = new Array(39); //定义日历展示用的数组\n";
_sJavaScript+="this.dayObj = new Array(39); //定义日期展示控件数组\n";
_sJavaScript+="this.dateStyle = null; //保存格式化后日期数组\n";
_sJavaScript+="this.objExport = null; //日历回传的显示控件\n";
_sJavaScript+="this.eventSrc = null; //日历显示的触发控件\n";
_sJavaScript+="this.inputDate = null; //转化外的输入的日期(d/m/yyyy)\n";
_sJavaScript+="this.thisYear = new Date().getFullYear(); //定义年的变量的初始值\n";
_sJavaScript+="this.thisMonth = new Date().getMonth()+ 1; //定义月的变量的初始值\n";
_sJavaScript+="this.thisDay = new Date().getDate(); //定义日的变量的初始值\n";
_sJavaScript+="this.today = this.thisDay +\"/\"+ this.thisMonth +\"/\"+ this.thisYear; //今天(d/m/yyyy)\n";
_sJavaScript+="this.iframe = window.frames(\"meizzCalendarIframe\"); //日历的 iframe 载体\n";
_sJavaScript+="this.calendar = getObjectById(\"meizzCalendarLayer\"); //日历的层\n";
_sJavaScript+="this.dateReg = \"\"; //日历格式验证的正则式\n";
_sJavaScript+="this.yearFall = 50; //定义年下拉框的年差值\n";
_sJavaScript+="this.format = \"yyyy-mm-dd\"; //回传日期的格式\n";
_sJavaScript+="this.timeShow = false; //是否返回时间\n";
_sJavaScript+="this.drag = true; //是否允许拖动\n";
_sJavaScript+="this.darkColor = \"#97BAE2\"; //控件的暗色\n";
_sJavaScript+="this.lightColor = \"#FFFFFF\"; //控件的亮色\n";
_sJavaScript+="this.btnBgColor = \"#E6E6FA\"; //控件的按钮背景色\n";
_sJavaScript+="this.wordColor = \"#000080\"; //控件的文字颜色\n";
_sJavaScript+="this.wordDark = \"#DCDCDC\"; //控件的暗文字颜色\n";
_sJavaScript+="this.dayBgColor = \"#F5F5FA\"; //日期数字背景色\n";
_sJavaScript+="this.todayColor = \"#FF0000\"; //今天在日历上的标示背景色\n";
_sJavaScript+="this.DarkBorder = \"#D4D0C8\"; //日期显示的立体表达色\n";
_sJavaScript+="}\n";
_sJavaScript+="var WebCalendar = new WebCalendar();\n";
_sJavaScript+="function calendar() //主调函数\n";
_sJavaScript+="{\n";
_sJavaScript+="var e = window.event.srcElement; writeIframe();\n";
_sJavaScript+="var o = WebCalendar.calendar.style; WebCalendar.eventSrc = e;\n";
_sJavaScript+="if (arguments.length == 0) WebCalendar.objExport = e;\n";
_sJavaScript+="else WebCalendar.objExport = eval(arguments[0]);\n";
_sJavaScript+="WebCalendar.iframe.tableWeek.style.cursor = WebCalendar.drag ? \"move\": \"default\";\n";
_sJavaScript+="var t = e.offsetTop, h = e.clientHeight, l = e.offsetLeft, p = e.type;\n";
_sJavaScript+="while (e = e.offsetParent){t += e.offsetTop; l += e.offsetLeft;}\n";
_sJavaScript+="o.display = \"\"; WebCalendar.iframe.document.body.focus();\n";
_sJavaScript+="var cw = WebCalendar.calendar.clientWidth, ch = WebCalendar.calendar.clientHeight;\n";
_sJavaScript+="var dw = document.body.clientWidth, dl = document.body.scrollLeft, dt = document.body.scrollTop;\n";
_sJavaScript+="if (document.body.clientHeight + dt - t - h >= ch) o.top = (p==\"image\")? t + h : t + h + 6;\n";
_sJavaScript+="else o.top = (t - dt < ch) ? ((p==\"image\")? t + h : t + h + 6) : t - ch;\n";
_sJavaScript+="if (dw + dl - l >= cw) o.left = l; else o.left = (dw >= cw) ? dw - cw + dl : dl;\n";
_sJavaScript+=@"if (!WebCalendar.timeShow) WebCalendar.dateReg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;"+"\n";
//if (!WebCalendar.timeShow) WebCalendar.dateReg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;_sJavaScript+=@"else WebCalendar.dateReg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;"+"\n";
//else WebCalendar.dateReg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; _sJavaScript+="try{\n";
_sJavaScript+="if (WebCalendar.objExport.value.trim() != \"\"){\n";
_sJavaScript+="WebCalendar.dateStyle = WebCalendar.objExport.value.trim().match(WebCalendar.dateReg);\n";
_sJavaScript+="if (WebCalendar.dateStyle == null)\n";
_sJavaScript+="{\n";
_sJavaScript+="WebCalendar.thisYear = new Date().getFullYear();\n";
_sJavaScript+="WebCalendar.thisMonth = new Date().getMonth()+ 1;\n";
_sJavaScript+="WebCalendar.thisDay = new Date().getDate();\n";
_sJavaScript+="alert(\"原文本框里的日期有错误!可能与你定义的显示时分秒有冲突!\");\n";
_sJavaScript+="writeCalendar(); return false;\n";
_sJavaScript+="}\n";
_sJavaScript+="else\n";
_sJavaScript+="{\n";
_sJavaScript+="WebCalendar.thisYear = parseInt(WebCalendar.dateStyle[1], 10);\n";
_sJavaScript+="WebCalendar.thisMonth = parseInt(WebCalendar.dateStyle[3], 10);\n";
_sJavaScript+="WebCalendar.thisDay = parseInt(WebCalendar.dateStyle[4], 10);\n";
_sJavaScript+="WebCalendar.inputDate = parseInt(WebCalendar.thisDay, 10) +\"/\"+ parseInt(WebCalendar.thisMonth, 10) +\"/\"+ \n";
_sJavaScript+="parseInt(WebCalendar.thisYear, 10); writeCalendar();\n";
_sJavaScript+="}\n";
_sJavaScript+="} else writeCalendar();\n";
_sJavaScript+="}\n";
_sJavaScript+="catch(e){writeCalendar();}\n";
_sJavaScript+="}\n";
_sJavaScript+="function funMonthSelect() //月份的下拉框\n";
_sJavaScript+="{\n";
_sJavaScript+="var m = isNaN(parseInt(WebCalendar.thisMonth, 10)) ? new Date().getMonth() + 1 : parseInt(WebCalendar.thisMonth);\n";
_sJavaScript+="var e = WebCalendar.iframe.document.forms[0].tmpMonthSelect;\n";
_sJavaScript+="for (var i=1; i<13; i++) e.options.add(new Option(i +\"月\", i));\n";
_sJavaScript+="e.style.display = \"\"; e.value = m; e.focus(); window.status = e.style.top;\n";
_sJavaScript+="}\n";
_sJavaScript+="function funYearSelect() //年份的下拉框\n";
_sJavaScript+="{\n";
_sJavaScript+="var n = WebCalendar.yearFall;\n";
_sJavaScript+="var e = WebCalendar.iframe.document.forms[0].tmpYearSelect;\n";
_sJavaScript+="var y = isNaN(parseInt(WebCalendar.thisYear, 10)) ? new Date().getFullYear() : parseInt(WebCalendar.thisYear);\n";
_sJavaScript+="y = (y <= 1000)? 1000 : ((y >= 9999)? 9999 : y);\n";
_sJavaScript+="var min = (y - n >= 1000) ? y - n : 1000;\n";
_sJavaScript+="var max = (y + n <= 9999) ? y + n : 9999;\n";
_sJavaScript+="min = (max == 9999) ? max-n*2 : min;\n";
_sJavaScript+="max = (min == 1000) ? min+n*2 : max;\n";
_sJavaScript+="for (var i=min; i<=max; i++) e.options.add(new Option(i +\"年\", i));\n";
_sJavaScript+="e.style.display = \"\"; e.value = y; e.focus();\n";
_sJavaScript+="}\n";
_sJavaScript+="function prevM() //往前翻月份\n";
_sJavaScript+="{\n";
_sJavaScript+="WebCalendar.thisDay = 1;\n";
_sJavaScript+="if (WebCalendar.thisMonth==1)\n";
_sJavaScript+="{\n";
_sJavaScript+="WebCalendar.thisYear--;\n";
_sJavaScript+="WebCalendar.thisMonth=13;\n";
_sJavaScript+="}\n";
_sJavaScript+="WebCalendar.thisMonth--; writeCalendar();\n";
_sJavaScript+="}\n";
_sJavaScript+="function nextM() //往后翻月份\n";
_sJavaScript+="{\n";
_sJavaScript+="WebCalendar.thisDay = 1;\n";
_sJavaScript+="if (WebCalendar.thisMonth==12)\n";
_sJavaScript+="{\n";
_sJavaScript+="WebCalendar.thisYear++;\n";
_sJavaScript+="WebCalendar.thisMonth=0;\n";
_sJavaScript+="}\n";
_sJavaScript+="WebCalendar.thisMonth++; writeCalendar();\n";
_sJavaScript+="}\n";
_sJavaScript+="function prevY(){WebCalendar.thisDay = 1; WebCalendar.thisYear--; writeCalendar();}//往前翻 Year\n";
_sJavaScript+="function nextY(){WebCalendar.thisDay = 1; WebCalendar.thisYear++; writeCalendar();}//往后翻 Year\n";
_sJavaScript+="function hiddenSelect(e){for(var i=e.options.length; i>-1; i--)e.options.remove(i); e.style.display=\"none\";}\n";
_sJavaScript+="function getObjectById(id){ if(document.all) return(eval(\"document.all.\"+ id)); return(eval(id)); }\n";
_sJavaScript+="function hiddenCalendar(){getObjectById(\"meizzCalendarLayer\").style.display = \"none\";};\n";
_sJavaScript+="function appendZero(n){return((\"00\"+ n).substr((\"00\"+ n).length-2));}//日期自动补零程序\n";
_sJavaScript+="function String.prototype.trim()\n";
_sJavaScript+="{\n";
_sJavaScript+="return this.replace(/(^"+@"\"+"s*)|("+@"\"+"s*$)"+@"/"+"g,\"\");}\n";
//return this.replace(/(^ \ s*)|( \ s*$) / g, " ");}_sJavaScript+="function dayMouseOver()\n";
_sJavaScript+="{\n";
_sJavaScript+="this.className = \"over\";\n";
_sJavaScript+="this.style.backgroundColor = WebCalendar.darkColor;\n";
_sJavaScript+="if(WebCalendar.day[this.id.substr(8)].split(\"/\")[1] == WebCalendar.thisMonth)\n";
_sJavaScript+="this.style.color = WebCalendar.lightColor;\n";
_sJavaScript+="}\n";
_sJavaScript+="function dayMouseOut()\n";
_sJavaScript+="{\n";
_sJavaScript+="this.className = \"out\"; var d = WebCalendar.day[this.id.substr(8)], a = d.split(\"/\");\n";
_sJavaScript+="this.style.removeAttribute('backgroundColor');\n";
_sJavaScript+="if(a[1] == WebCalendar.thisMonth && d != WebCalendar.today)\n";
_sJavaScript+="{\n";
_sJavaScript+="if(WebCalendar.dateStyle && a[0] == parseInt(WebCalendar.dateStyle[4], 10))\n";
_sJavaScript+="this.style.color = WebCalendar.lightColor;\n";
_sJavaScript+="this.style.color = WebCalendar.wordColor;\n";
_sJavaScript+="}\n";
_sJavaScript+="}\n";
_sJavaScript+="function writeCalendar() //对日历显示的数据的处理程序\n";
_sJavaScript+="{\n";
_sJavaScript+="var y = WebCalendar.thisYear;\n";
_sJavaScript+="var m = WebCalendar.thisMonth; \n";
_sJavaScript+="var d = WebCalendar.thisDay;\n";
_sJavaScript+="WebCalendar.daysMonth[1] = (0==y%4 && (y%100!=0 || y%400==0)) ? 29 : 28;\n";
_sJavaScript+="if (!(y<=9999 && y >= 1000 && parseInt(m, 10)>0 && parseInt(m, 10)<13 && parseInt(d, 10)>0)){\n";
_sJavaScript+="alert(\"对不起,你输入了错误的日期!\");\n";
_sJavaScript+="WebCalendar.thisYear = new Date().getFullYear();\n";
_sJavaScript+="WebCalendar.thisMonth = new Date().getMonth()+ 1;\n";
_sJavaScript+="WebCalendar.thisDay = new Date().getDate(); }\n";
_sJavaScript+="y = WebCalendar.thisYear;\n";
_sJavaScript+="m = WebCalendar.thisMonth;\n";
_sJavaScript+="d = WebCalendar.thisDay;\n";
_sJavaScript+="WebCalendar.iframe.meizzYearHead.innerText = y +\"年\";\n";
_sJavaScript+="WebCalendar.iframe.meizzYearMonth.innerText = parseInt(m, 10) +\"月\";\n";
_sJavaScript+="WebCalendar.daysMonth[1] = (0==y%4 && (y%100!=0 || y%400==0)) ? 29 : 28; //闰年二月为29天\n";
_sJavaScript+="var w = new Date(y, m-1, 1).getDay();\n";
_sJavaScript+="var prevDays = m==1 ? WebCalendar.daysMonth[11] : WebCalendar.daysMonth[m-2];\n";
_sJavaScript+="for(var i=(w-1); i>=0; i--) //这三个 for 循环为日历赋数据源(数组 WebCalendar.day)格式是 d/m/yyyy\n";
_sJavaScript+="{\n";
_sJavaScript+="WebCalendar.day[i] = prevDays +\"/\"+ (parseInt(m, 10)-1) +\"/\"+ y;\n";
_sJavaScript+="if(m==1) WebCalendar.day[i] = prevDays +\"/\"+ 12 +\"/\"+ (parseInt(y, 10)-1);\n";
_sJavaScript+="prevDays--;\n";
_sJavaScript+="}\n";
_sJavaScript+="for(var i=1; i<=WebCalendar.daysMonth[m-1]; i++) WebCalendar.day[i+w-1] = i +\"/\"+ m +\"/\"+ y;\n";
_sJavaScript+="for(var i=1; i<39-w-WebCalendar.daysMonth[m-1]+1; i++)\n";
_sJavaScript+="{\n";
_sJavaScript+="WebCalendar.day[WebCalendar.daysMonth[m-1]+w-1+i] = i +\"/\"+ (parseInt(m, 10)+1) +\"/\"+ y;\n";
_sJavaScript+="if(m==12) WebCalendar.day[WebCalendar.daysMonth[m-1]+w-1+i] = i +\"/\"+ 1 +\"/\"+ (parseInt(y, 10)+1);\n";
_sJavaScript+="}\n";
_sJavaScript+="for(var i=0; i<39; i++) //这个循环是根据源数组写到日历里显示\n";
_sJavaScript+="{\n";
_sJavaScript+="var a = WebCalendar.day[i].split(\"/\");\n";
_sJavaScript+="WebCalendar.dayObj[i].innerText = a[0];\n";
_sJavaScript+="WebCalendar.dayObj[i].title = a[2] +\"-\"+ appendZero(a[1]) +\"-\"+ appendZero(a[0]);\n";
_sJavaScript+="WebCalendar.dayObj[i].bgColor = WebCalendar.dayBgColor;\n";
_sJavaScript+="WebCalendar.dayObj[i].style.color = WebCalendar.wordColor;\n";
_sJavaScript+="if ((i<10 && parseInt(WebCalendar.day[i], 10)>20) || (i>27 && parseInt(WebCalendar.day[i], 10)<12))\n";
_sJavaScript+="WebCalendar.dayObj[i].style.color = WebCalendar.wordDark;\n";
_sJavaScript+="if (WebCalendar.inputDate==WebCalendar.day[i]) //设置输入框里的日期在日历上的颜色\n";
_sJavaScript+="{WebCalendar.dayObj[i].bgColor = WebCalendar.darkColor; WebCalendar.dayObj[i].style.color = WebCalendar.lightColor;}\n";
_sJavaScript+="if (WebCalendar.day[i] == WebCalendar.today) //设置今天在日历上反应出来的颜色\n";
_sJavaScript+="{WebCalendar.dayObj[i].bgColor = WebCalendar.todayColor; WebCalendar.dayObj[i].style.color = WebCalendar.lightColor;}\n";
_sJavaScript+="}\n";
_sJavaScript+="}\n";
_sJavaScript+="function returnDate() //根据日期格式等返回用户选定的日期\n";
_sJavaScript+="{\n";
_sJavaScript+="if(WebCalendar.objExport)\n";
_sJavaScript+="{\n";
_sJavaScript+="var returnValue;\n";
_sJavaScript+="var a = (arguments.length==0) ? WebCalendar.day[this.id.substr(8)].split(\"/\") : arguments[0].split(\"/\");\n";
_sJavaScript+="var d = WebCalendar.format.match(/^("+@"\"+"w{4})(-|"+@"\"+"/)("+@"\"+"w{1,2})"+@"\"+"2("+@"\"+"w{1,2})$/);\n";
//var d = WebCalendar.format.match(/^( \ w{4})(-| \ /)( \ w{1,2}) \ 2( \ w{1,2})$/);_sJavaScript+="if(d==null){alert(\"你设定的日期输出格式不对!请重新定义 WebCalendar.format !\"); return false;}\n";
_sJavaScript+="var flag = d[3].length==2 || d[4].length==2; //判断返回的日期格式是否要补零\n";
_sJavaScript+="returnValue = flag ? a[2] +d[2]+ appendZero(a[1]) +d[2]+ appendZero(a[0]) : a[2] +d[2]+ a[1] +d[2]+ a[0];\n";
_sJavaScript+="if(WebCalendar.timeShow)\n";
_sJavaScript+="{\n";
_sJavaScript+="var h = new Date().getHours(), m = new Date().getMinutes(), s = new Date().getSeconds();\n";
_sJavaScript+="returnValue += flag ? \"\"+ appendZero(h) +\":\"+ appendZero(m) +\":\"+ appendZero(s) : \"\"+ h +\":\"+ m +\":\"+ s;\n";
_sJavaScript+="}\n";
_sJavaScript+="WebCalendar.objExport.value = returnValue;\n";
_sJavaScript+="hiddenCalendar();\n";
_sJavaScript+="}\n";
_sJavaScript+="}\n";
_sJavaScript+="function document.onclick()\n";
_sJavaScript+="{\n";
_sJavaScript+="if(WebCalendar.eventSrc != window.event.srcElement) hiddenCalendar();\n";
_sJavaScript+="}\n";
_sJavaScript+="-->\n";
_sJavaScript+="</script>\n";
_sJavaScript+="\n";
}
#endregion
override_Function#regionoverride_Function
/**////<summary>///重写函数,处理控件的回发事件
///</summary>
publicvirtualboolLoadPostData(stringpostDataKey,NameValueCollection values)
{
String presentValue=_Text;
String postedValue=values[postDataKey];
if(!presentValue.Equals(postedValue))
{
_Text=postedValue;
returntrue;
}returnfalse;
}
publicvirtualvoidRaisePostDataChangedEvent()
{
}
/**////<summary>///重写OnPreRender(),对控件进行初始化设置
///</summary>
protectedoverridevoidOnPreRender(EventArgs e)
{
//设置默认日期:当前日期if(_DefaultDate==true)
{
//_Text = System.DateTime.Now.Year.ToString() + "-" + System.DateTime.Now.Month.ToString() + "-" + System.DateTime.Now.Day.ToString();_Text=System.DateTime.Now.Date.ToString("yyyy-MM-dd");
} }
/**////<summary>///重写Render函数,用Html代码输出控件
///</summary>
protectedoverridevoidRender( HtmlTextWriter writer)
{
string_strTextBoxClass="";
string_strButtonClass="";
//生成输出Html控件代码_sOutput_Html="";
_sOutput_Html+="\n";
//设置样式if(_TextBoxClass!="")
{
_strTextBoxClass="class = '"+_TextBoxClass+"'";
}if(_ButtonClass!="")
{
_strButtonClass="class = '"+_ButtonClass+"'";
}
_sOutput_Html+="<input type='text' name='"+this.UniqueID+"' size='7'"+_strTextBoxClass+"value='"+_Text+"' runat='server' >\n";
_sOutput_Html+="<input"+_strButtonClass+"type=button value='' οnclick='calendar("+this.UniqueID+")'>\n";
//生成JavaScript脚本
//判断JavaScript脚本是否已经在客户端注册,if(Page.IsClientScriptBlockRegistered(_sJavaScript_ID))
{
//已注册,不重复输出角本到客户端}else{
_MakeJavaScript();
_sOutput_Html+=_sJavaScript;
}
//在客户端注册JavaScript脚本Page.RegisterClientScriptBlock(_sJavaScript_ID,_sJavaScript);
writer.Write(_sOutput_Html);
}
#endregion
}}
转载于:https://www.cnblogs.com/Titans/archive/2006/09/15/504892.html
日历控件源码开放--适用于ASP.NET 1.1相关推荐
- 农历控件源码(C#)
C#农历控件源码 using System; namespace CNCalendar { public class CNDate { private const ushort START_YEAR ...
- Pdf文档在线编辑控件源码及演示
支持Pdf文档在线编辑,并可以进行另存管理. PdfTestSite为演示文件夹 PdfViewer为控件源码控件 test.pdf为模版文件 注意:服务器端需要安装Adobe Reader以便进行更 ...
- Android-UI 超级优良超级多超级强大开源控件源码demo
第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...
- Android之PullToRefresh控件源码解析
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/73802453 本文出自:[顾林海的博客] 个人开发的微信小程序,目前功 ...
- QT学习之经典控件源码(如此强大)
进来好好学习了QT,研究了很多别人的源码,在绘图方面原来QT也是如此强大! 源码下载: /Files/feiya ...
- Android SwipeRefreshLayout下拉刷新控件源码简单分析
咱们在做Android APP开发的时候经常碰到有下拉刷新和上拉加载跟多的需求,这篇文章咱们先说说下来刷新,咱们就以google的原生的下拉刷新控件SwipeRefreshLayout来看看大概的实现 ...
- PhotoView图片缩放控件源码浅析(一)
本文参考自http://www.tuicool.com/articles/ea2ANjm 简介 PhotoView属性: 可以用于查看图片,并对图片进行拖动缩放,拖动过程中不会出现边缘空白: 双击 ...
- PowerBuilder 9日历控件展示,下载(附带源码)
下载地址:https://download.csdn.net/download/weixin_37914760/11444539 1.pb9日历控件,支持多个日期选择
- 9款精致HTML5/jQuery日历时钟控件源码下载(源码请见百度云) 链接:http://pan.baidu.com/s/1geIXe75 密码:7m4a...
现在的网页应用越来越丰富,我们在网页中填写日期和时间已经再也不用手动输入了,而是使用各种各样的日期时间选择控件,大部分样式华丽的日期选择和日历控件都是基于jQuery和HTML5的,比如今天要分享的这 ...
最新文章
- 前置交换机数据交换_我们的数据科学交换所
- LeetCode 5843. 作为子字符串出现在单词中的字符串数目
- Symbian和C++ SDK开发入门之部署
- 3-1:常见任务和主要工具之软件包管理
- android系统性能优化(63)---Android APP 卡顿问题分析及解决方案
- java二级考试真题_计算机等级考试真题2(JAVA)
- 做真正Hacker 的乐趣──自己动手去实践
- 素数猜想对 c语言,1007 素数对猜想 (20 分)(C语言实现)
- STM32CubeIDE Audio播放音频 WM8978 + I2S + DMA双缓存模式
- 【语言-c#】应用程序正常初始化(0xc000007b)失败。请单击“确定”,终止应用程序。
- Arcgis10.8中将三维的高程点转换为二维的高程点
- Error: unable to connect to node rabbit@localhost: nodedown 创建消息队列用户报错
- 阿里云上部署的SQL Server服务器和SVN服务器不能远程访问
- bcdedit用法详解
- Coursera普林斯顿大学算法下Week4:Boggle 拼字游戏
- ATFX:美国9月PCE物价指数晚间发布,会出现意外吗?
- 专偷密码的“偷密婆” 疯狂盗取QQ帐号
- DSP第一次上机作业
- 基于有理逼近算法的序列密码的有理分数表示(全国高校数学密码挑战赛)
- 玩家角色信息是保存在服务器上吗,Reworld使用存储服务存储玩家的数据
热门文章
- layui 自定义排序_thinkphp5+layui异步修改排序
- 编译原理lr(0)c语言,关于编译原理:LR(1)LR(0)文法判断?
- 打开指定摄像头_我在无人区深处,遇到了一个高清摄像头
- python增量爬虫_python爬虫Scrapy框架之增量式爬虫
- 利用Matlab求解线性规划问题
- conda(pip) bad interpreter的解决办法
- jdbc oracle添加数据库连接,JDBC与Oracle数据库连接最常用方法
- python多维数据存储_在Python中存储和重新加载大型多维数据集
- 图解HTTP学习笔记
- 2.boost遍历数组容器