仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 619|回复: 7
打印 上一主题 下一主题

[学习教程] ASP编程:带日期标注的日历控件

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:34:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。控件称号:CalendarwithDateMark
版本:1.0
类型:HTMLComponent
运转需求:IE5(保举IE5.5或更高版本)、MSXML、ASP或ASP.NET(背景)
费用:收费
支持:不供应撑持
源代码:XMLScriptlet
------------------------------------------------------------------------
<public:attachevent="oncontentready"onevent="init()"/>
<public:propertyname="value"get="getValue"put="setValue"/>
<public:propertyname="stringValue"get="getStringValue"/>
<public:propertyname="mark"get="getCurrentMark"put="setCurrentMark"/>
<public:propertyname="markList"get="getMarkList"/>
<public:methodname="refresh"/>
<public:methodname="addMark"/>
<public:methodname="removeMark"/>
<public:methodname="removeAllMark"/>
<public:methodname="loadMark"/>
<public:methodname="saveMark"/>
<public:eventname="onvaluechange"id="vlcg"/>
<scriptlanguage="JScript">

//----------------------------------------------------------------
//HTMLComponent:Calendarwithdatemark(带工夫标注的日历控件)
//
//Version:1.0
//
//Request:MicrosoftIE5orup
//
//Author:JoJo
//
//LastRealse:5/9/2001
//
//Copyright:ThinkSpaceSoftTec
//
//Contact:thinkspace@163.net
//----------------------------------------------------------------

vardate=newDate();
varactiveDate=newDate();

varmarklist=newActiveXObject("Scripting.Dictionary");

functionWriteXMLToDictionary(xmldoc,dict,rewrite){
varxnodelist=xmldoc.documentElement.selectNodes("Mark");
if(rewrite)dict.RemoveAll();
for(vari=0;i<xnodelist.length;i++){
varxnode=xnodelist.item(i);
varxdate=xnode.selectSingleNode("MarkDate");
varxnote=xnode.selectSingleNode("Note");
//alert(xdate.text+","+xnote.text);
if(xdate.text&&xnote.text){
dict.item(xdate.text)=xnote.text;
}
}
}

functionpostxml(xmldoc,url){
varxmlhttp=newActiveXObject("Microsoft.XMLHTTP");
xmlhttp.Open("POST",url,false);
xmlhttp.Send(xmldoc);
varxdoc=newActiveXObject("Microsoft.XMLDom");
xdoc.async=false;
xdoc.loadXML(xmlhttp.responseText);
return!!xdoc.documentElement.text;
}

functionsaveMark(url){
varxmldoc=newActiveXObject("Microsoft.XMLDom");
WriteDictionaryToXML(marklist,xmldoc);
if(postxml(xmldoc,url)){
refresh();
sendEvent();
returntrue;
}
returnfalse;
}

functionWriteDictionaryToXML(dict,xmldoc){
xmldoc.loadXML("<MarkList/>");
varkeys=(newVBArray(dict.Keys())).toArray();
for(vari=0;i<keys.length;i++){
try{
vard=newDate(keys[i]);
}catch(e){
continue;
}
if(!dict.item(keys[i]))continue;
varxmark=xmldoc.createElement("Mark");
varxmarkdate=xmldoc.createElement("MarkDate");
xmarkdate.text=dateToSortString(d);
varxnote=xmldoc.createElement("Note");
xnote.text=dict.item(keys[i]);
xmark.appendChild(xmarkdate);
xmark.appendChild(xnote);
xmldoc.documentElement.appendChild(xmark);
}
}

functionloadMark(url,rewrite){
varxmldoc=newActiveXObject("Microsoft.FreeThreadedXMLDOM");
xmldoc.async=false;
xmldoc.load(url);
//alert(xmldoc.xml);
WriteXMLToDictionary(xmldoc,marklist,rewrite);
refresh();
sendEvent();
}

functionrefresh(){
fillCalendar(date);
}

functiongetCurrentMark(){
if(!getMark(activeDate))return"";
returngetMark(activeDate);
}

functionsetCurrentMark(markvalue){
addMark(activeDate,markvalue);
}

functiongetMarkList(){
returnmarklist;
}

functiondateToSortString(adate){
return(adate.getMonth()+1)+"/"+adate.getDate()+"/"+adate.getFullYear();
}

functiongetMark(adate){
if(marklist.Exists(dateToSortString(adate)))
returnmarklist.Item(dateToSortString(adate));
}

functionaddMark(adate,note){
if(!note)returnfalse;
try{
vard=newDate(adate);
marklist.item(dateToSortString(d))=note;
fillCalendar(date);
returntrue;
}catch(e){
returnfalse;
}
}

functionremoveMark(adate){
try
{
marklist.Remove(dateToSortString(adate));
fillCalendar(date);
}catch(e){
}
}

functionremoveAllMark(){
marklist.RemoveAll();
fillCalendar(date);
}

functionsendEvent(){
varoevent=createEventObject();
vlcg.fire(oevent);
}

functiongetStringValue(){
returnactiveDate.getFullYear()+"年"+(activeDate.getMonth()+1)+"月"+activeDate.getDate()+"日";
}

functiongetValue(){
returnactiveDate;
}

functionsetValue(invalue){
try{
vartdate=newDate(invalue);
activeDate.setFullYear(tdate.getFullYear(),tdate.getMonth(),tdate.getDate());
date.setFullYear(tdate.getFullYear(),tdate.getMonth(),tdate.getDate());
fillCalendar(date);
sendEvent();
}catch(e){
return;
}
}
functionfillCalendar(adate){
ynm.innerText=adate.getFullYear()+"年"+(adate.getMonth()+1)+"月";
vartempdate=newDate();
tempdate.setFullYear(adate.getFullYear(),adate.getMonth(),1);
varfirst=true;
for(vari=0;i<tblbd.rows.length;i++){
for(varj=0;j<tblbd.rows(i).cells.length;j++){
varcell=tblbd.rows(i).cells(j);
cell.innerHTML="";
cell.bgcolor="";
cell.title="";
cell.style.backgroundColor="";

if(tempdate.getDay()==j){
if(!first)continue;
cell.innerText=tempdate.getDate();

if(getMark(tempdate)){
cell.bgcolor="wheat";
cell.style.backgroundColor=cell.bgcolor;
vartt=getMark(tempdate);
if(tt.length<20)
cell.title=tt
else
cell.title=tt.substr(0,20)+"...";
}

if(tempdate.getDate()==activeDate.getDate()){
hightLightDate(cell);
}

tempdate.setFullYear(tempdate.getFullYear(),tempdate.getMonth(),tempdate.getDate()+1);
first=tempdate.getDate()>1;
}
}
}
}

functionhightLightDate(object){
vartds=tblbd.all.tags("TD");
for(vari=0;i<tds.length;i++){
if(tds(i)!=object){
tds(i).style.backgroundColor=tds(i).bgcolor;
tds(i).style.color=""
}else{
tds(i).style.backgroundColor="navy";
tds(i).style.color="white";
}
}
}

functionselectDate(){
vari=parseInt(window.event.srcElement.innerText);
if((!isNaN(i))&&(i<3000)){
hightLightDate(window.event.srcElement);
activeDate.setFullYear(date.getFullYear(),date.getMonth(),i);
sendEvent();
}
}

functionmoveDate(){
vark=window.event.keyCode;
switch(k){
case37:
activeDate.setFullYear(activeDate.getFullYear(),activeDate.getMonth(),activeDate.getDate()-1);
break;
case38:
activeDate.setFullYear(activeDate.getFullYear(),activeDate.getMonth(),activeDate.getDate()-7);
break;
case39:
activeDate.setFullYear(activeDate.getFullYear(),activeDate.getMonth(),activeDate.getDate()+1);
break;
case40:
activeDate.setFullYear(activeDate.getFullYear(),activeDate.getMonth(),activeDate.getDate()+7);
break;
}
date.setFullYear(activeDate.getFullYear(),activeDate.getMonth(),activeDate.getDate());
fillCalendar(date);
sendEvent();
}

functionsetActiveDate(){
vari=activeDate.getDate();
activeDate.setFullYear(date.getFullYear(),date.getMonth(),i);
while((date.getMonth()!=activeDate.getMonth())||(date.getFullYear()!=activeDate.getFullYear())){
activeDate.setFullYear(date.getFullYear(),date.getMonth(),i--);
}
sendEvent();
}

functiongoNextMonth(){
date.setMonth(date.getMonth()+1,1);
setActiveDate();
fillCalendar(date);
}

functiongoNextYear(){
date.setFullYear(date.getFullYear()+1,date.getMonth(),1);
setActiveDate();
fillCalendar(date);
}

functiongoPriorYear(){
date.setFullYear(date.getFullYear()-1,date.getMonth(),1);
setActiveDate();
fillCalendar(date);
}

functiongoPriorMonth(){
date.setMonth(date.getMonth()-1,1);
setActiveDate();
fillCalendar(date);
}

//---------------------------------------------------------------------

vartbl=window.document.createElement("<TABLEstyle="border:solid1px;width:100%;height:100%;font-size:9pt"cellspacing=0>");
vartblhd=window.document.createElement("THEAD");
vartblbd=window.document.createElement("TBODY");

varanchorPriorYear=window.document.createElement("A");
anchorPriorYear.style.fontFamily="webdings";
anchorPriorYear.style.cursor="hand";
anchorPriorYear.innerText="7";
anchorPriorYear.title="上一年";

varanchorPriorMonth=window.document.createElement("A");
anchorPriorMonth.style.fontFamily="webdings";
anchorPriorMonth.style.cursor="hand";
anchorPriorMonth.innerText="3";
anchorPriorMonth.title="上一月";

varanchorNextMonth=window.document.createElement("A");
anchorNextMonth.style.fontFamily="webdings";
anchorNextMonth.style.cursor="hand";
anchorNextMonth.innerText="4";
anchorNextMonth.title="下一月";

varanchorNextYear=window.document.createElement("A");
anchorNextYear.style.fontFamily="webdings";
anchorNextYear.style.cursor="hand";
anchorNextYear.innerText="8";
anchorNextYear.title="下一年";

varynm=window.document.createElement("FONT");
ynm.style.width="60%";
ynm.style.fontWeight="bold";

varcpt=window.document.createElement("CAPTION");

tbl.appendChild(cpt);
tbl.appendChild(tblhd);
tbl.appendChild(tblbd);

functioninithead(){
cpt.style.backgroundColor="navy";
cpt.style.color="white";
cpt.style.textAlign="center";
cpt.style.cursor="defalut";
cpt.appendChild(anchorPriorYear);
cpt.appendChild(anchorPriorMonth);
cpt.appendChild(ynm);
cpt.appendChild(anchorNextMonth);
cpt.appendChild(anchorNextYear);
varrow=tblhd.insertRow();
row.align="center";
varweekStr=newArray("日","一","二","三","四","五","六");
for(vari=0;i<weekStr.length;i++){
varcell=row.insertCell();
cell.innerText=weekStr[i];
cell.style.borderBottom="solid1px";
cell.style.cursor="default";
cell.align="center";
}
}

functioninitbody(){
for(vari=0;i<6;i++){
varrow=tblbd.insertRow();
for(varj=0;j<7;j++){
varcell=row.insertCell();
cell.innerHTML="";
cell.style.cursor="default";
cell.align="center";
}
}
}

functioninit(){
inithead();
initbody();
element.appendChild(tbl);
fillCalendar(date);
tblbd.attachEvent("onclick",selectDate);
tblbd.attachEvent("onkeydown",moveDate);
anchorPriorYear.attachEvent("onclick",goPriorYear);
anchorPriorMonth.attachEvent("onclick",goPriorMonth);
anchorNextMonth.attachEvent("onclick",goNextMonth);
anchorNextYear.attachEvent("onclick",goNextYear);
sendEvent();
}
</script>
asp,jsp,php是web开发的三大技术,asp简单易用且有microsoft做靠山,jsp功能强大是因为有java支持,php则开源跨平台.在国内,asp应用范围最广,jsp发展势头最猛,php则处于劣势.这可能与公司的支持以及技术的培训有关.
愤怒的大鸟 该用户已被删除
沙发
 楼主| 发表于 2015-1-19 16:44:47 | 只看该作者
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
若相依 该用户已被删除
板凳
发表于 2015-2-5 20:16:25 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
莫相离 该用户已被删除
地板
发表于 2015-2-13 12:08:30 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
深爱那片海 该用户已被删除
5#
发表于 2015-3-3 21:12:30 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
蒙在股里 该用户已被删除
6#
发表于 2015-3-11 13:48:58 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
透明 该用户已被删除
7#
发表于 2015-3-18 20:30:25 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
8#
发表于 2015-3-26 14:24:59 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 23:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表