用過(guò)軟件的朋友都知道,進(jìn)度條是一個(gè)優(yōu)秀軟件的重要組成部分。
它的存在能夠使用戶及時(shí)掌握程序的運(yùn)行進(jìn)度,確認(rèn)應(yīng)用程序正常工作。可是ASP中似乎沒(méi)有上述標(biāo)準(zhǔn)控件,控制起來(lái)也比較麻煩。
那幺如何實(shí)現(xiàn)進(jìn)度條呢?
以下是本人的一些觀點(diǎn)(僅供參考)
我們通常在用ASP處理程序(指的是寫(xiě)文件或操作數(shù)據(jù)庫(kù))的時(shí)候,會(huì)專門(mén)用一個(gè)頁(yè)面(*.asp)去處理或控制這些程序,當(dāng)處理完畢的時(shí)候再跳轉(zhuǎn)到顯示頁(yè)面。這時(shí)我們就可以通過(guò)這些處理頁(yè)面顯示進(jìn)度條。其方法是根據(jù)程序處理的進(jìn)度依次畫(huà)一百?gòu)埻瑯拥膱D形(如有顏色的矩形),從而形成進(jìn)度條。其效果與用其它編程工具所實(shí)現(xiàn)的基本相似
以下是一些Source,希望能夠給各位有個(gè)啟發(fā)。
response.buffer=true
dim lostnum
dim shownum
delayshow(dstep,dmax)過(guò)程是用于顯示多少img(畫(huà)多少進(jìn)度)
其中dmax為表示整個(gè)程序需要處理多少(dmax)步才能完成整個(gè)處理程序.
其中dstep表示當(dāng)前處理的步驟占整個(gè)處理過(guò)程中的分量,用數(shù)量表示。
變量lostnum的存在是由于dmax過(guò)大(比如10000),而dstep過(guò)小(比如1)造成的。如果調(diào)用delayshow(1,10000)勢(shì)必不可能畫(huà)一次img,事實(shí)上
delayshow(100,10000)才畫(huà)一次,表示完成1%,因?yàn)?00占10000的1%.
sub delayshow(dstep,dmax)
dim total //顯示畫(huà)面100張img
dim dtemp //過(guò)渡變量
total=100
dtemp=dstep
dstep=dstep+lostnum
if (dstep*total)/dmax<1 then
//判斷當(dāng)要處理的東西連1%都沒(méi)有時(shí),不畫(huà)img同時(shí)用變量lostnum存放未畫(huà)的處理總數(shù),便于下次調(diào)用本過(guò)程時(shí)在處理。
lostnum=lostnum+dtemp
else
for ccc=1 to fix((dstep*total)/dmax) //取整數(shù)
Response.Write "
"
next
Response.Flush //將緩存里的東西(圖片)顯示出來(lái)
//變量shownum用于存放目前已經(jīng)畫(huà)的img
shownum=shownum+fix((dstep*total)/dmax)
lostnum=0
end if
end sub
//由于算法的問(wèn)題,主要是取余造成不能完全畫(huà)100次,這時(shí)就需要
過(guò)程showlost()將余下未畫(huà)的img,通通顯示處理,實(shí)現(xiàn)進(jìn)度條的等長(zhǎng)
sub showlost()
for ccc=1 to (100-shownum)
Response.Write ("
")
next
Response.Write "
"
Response.Flush
end sub
最后請(qǐng)注意
這里需要用到緩存技術(shù)
response.buffer=true;
response.flush;
response.end
這些請(qǐng)參考MSDN幫助
更多信息請(qǐng)查看IT技術(shù)專欄