|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。精髓|成绩在开辟收集使用程序时,经常会碰到多级选择的成绩,即“子”一级选择的备选项信息依附于“父”一级选择的数据。比方:在一个网页中包括两个select输出控件,一个用于列表备选的国度信息(“父”一级选择),另外一个用于列表省分信息(“子”一级选择)。当用户在第一个select输出控件(“父”一级选择)当选中国度后,另外一个select输出控件(“子”一级选择)的选项也要变成响应国度的省、州选项,而他们之间的干系静态地保留在数据库中。
提出成绩
传统的办理办法能够形貌为:用户选中“父”一级选择后,经由过程form提交的体例,由响应的处置程序从数据库中提取“子”一级选择的信息,并革新客户端页面中“子”一级选择的数据。
接纳这类办法的弱点是:
●必需编写一个或多个ASP程序分离处置用户的哀求,程序代码质量不高;
●当级数凌驾两级时,必需办理“祖父”一级的选择信息的保留成绩;
●每次用户的修正或扫瞄多级信息,都必需反复提交以取得多级信息,如许,增添了服务器的包袱,呼应速率较慢。
针对以上计划中存在的成绩,笔者在理论中找到了一种办理办法。该办法天真使用HTML言语中的输出把持工具hidden,当hidden中的数据量小于2K时,可一次性将多级信息下载到客户端,并经由过程服务器端剧本与客户端剧本的配合感化,间接在客户端完成多级选择。
办理办法
HTML言语中的输出把持工具hidden能够经由过程name-value的体例存储字符串数据,并且该把持工具在客户端界面上不成见。
使用该输出把持,能够将数据库中多级选择信息依照必定的划定规矩编码,分离寄存在多个hidden工具中。当用户点击父级选项时,客户端程序依照必定的对应干系查找响应的hidden工具,并将hidden工具中的字符串信息解码,革新子级选择工具。
个中,服务器端剧本必要完成的事情是将数据库中的多级信息依照按次顺次提取,而且将同级的信息数据依照必定划定规矩编码构成字符串,存储在分歧的hidden工具中;而客户端剧本必要完成的事情是将hidden工具中的字符串数据解码,并显现在子级选择工具中。
必要出格指出的是,数据的字符串编码是此种办法乐成与否的一个关头要素,因而必需包管编码办法准确无误。
详细完成
上面以国度、省分两级选择为例,先容在ASP中多级选择的详细完成办法。
在SQLServer7.0数据库CountryDoc中寄存两级信息的表分离为CountryNamechar(20)和ProvinceNamechar(20)。
思索到国度名、省/州名为字符串数据,且不包括字符“0”,因而在选择编码办法时,接纳5个一连的字符“0”作为分歧数据项之间的分开符。编码后的省分数据详细情势为“北京00000上海00000黑龙江00000吉林”。
<html><head>
<scriptlanguage=vbscript>
dimProvinceArr()
dimProvinceNum,ProvinceStr
//字符串解码,将由‘00000分隔的选项回存到响应的静态数组中
submyStrToArray
dimi,tmpInt,tmpStr
redimProvinceArr(ProvinceNum-1)
tmpStr=ProvinceStr
fori=0toProvinceNum-1step1
tmpInt=InStr(tmpStr,“00000”)
ProvinceArr(i)=Left(tmpStr,tmpInt-1)
tmpStr=Right(tmpStr,Len(tmpStr)-tmpInt-4)
next
endsub
//向省级选择select工具中增加一个备选项
subAddOption(OptionStr)
dimoOption
setoOption=document.createElement(“OPTION”)
oOption.value=OptionStr
oOption.text=OptionStr
form1.ProvinceList.add(oOption)
endsub
//扫除省级选择select工具的一切备选项(第一项除外)
subClearOption
dimcount,i
count=form1.ProvinceList.length
ifcount<=1then
exitsub
endif
fori=count-1to1step-1
form1.ProvinceList.remove(i)
next
endsub
//当用户选中国度级备选项时,更新省级备选项中的数据
subCountryList_onChange
dimCountryName,i
//取得国度称号
CountryName=form1.CountryList.value
ifCountryName=“none”then
exitsub
endif
//依据国度称号查找响应的hidden工具,并从中掏出省分、州数据(字符串)
fori=0toform1.elements.length-1step1
ifinStr(form1.elements(i).name,CountryName&“Arr”)>0andform1.elements(i).tagName=“INPUT”then
ProvinceStr=form1.elements(i).value
endif
ifform1.elements(i).tagName=“INPUT”andinStr(form1.elements(i).name,CountryName&“Num”)>0then
ProvinceNum=form1.elements(i).value
endif
next
ifProvinceNum=0then
exitsub
endif
//扫除省级选择中的数据(除第一项之外)
ClearOption
//字符串解码(字符串情势的省级数据寄存在全局变量ProvinceStr中)
myStrToArray
//从头机关省级选择中的数据信息
fori=0toProvinceNum-1step1
AddOption(ProvinceArr(i))
next
form1.ProvinceList.selectedIndex=0
endsub
</script>
</head>
<body>
<formname=form1>
<tablealign=center>
<tr><td>国度</td>
<td>省分、州</td></tr>
<tr><td><selectname=CountryList>
<optionvalue=none>_______________</option>
<%@Language=VBScript%>
<%dimCountryArr()%>
<%i=0%>
//提取表中的一切国度选项,并写进国度级选择控件
<%sqlText=“selectdistinctCountryNamefromCountryDoc”%>
<%setrs=conn.Execute(sqlText)%>
<%dowhilenotrs.EOF%>
<%i=i+1%>
<%redimpreserveCountryArr(i)%>
//将国度级数据写进静态数组中
<%CountryArr(i-1)=Trim(rs(“CountryName”))%>
<optionvalue=<%=Trim(r(“CountryName”))%>>
<%=Trim(rs(“CountryName”))%></option>
<%rs.MoveNext%>
<%loop%>
<%rs.Close%>
<%CountryNum=I%>
</select>
</td><td>
<selectname=ProvinceList>
<optionvalue=none>_______________</option>
</select></td></tr></table>
//顺次从静态数组中提取国度称号,并提取对应的省级数据信息
<%fori=0toCountryNum-1step1%>
<%temp1=CountryArr(i)%>
<%ProvinceNum=0%>
<%sqlText=“selectcount(*)asRecordNumfromCountryDocwhereCountryName=‘“&temp1&”’”%><%setrs=conn.Execute(sqlText)%>
<%ProvinceNum=rs(“RecordN</p>当然了,现在国内CRM厂商的产品与其说是CRM,但从至少从我的角度分析上来看,充其量只是一个大型的进销存而已了,了解尚浅,不够胆详评,这里只提技术问题 |
|