![]() |
![]() |
News... | Hack-Acad | Downloads | Web-Projekte | System-Check | Kontakt |
HACKACAD - ASP Progressbar Situation: Eine komplexe Datenbankabfrage über tausende von Datensätzen, die zur Bearbeitung je nach Auslastung lange dauern kann. Wie kann man nun mittels ASP dem Benutzer eine Art Fortschrittsanzeige zeigen? Der untenaufgeführte Quellcode wird zunächst ein Text-Eingabefeld und einen Submit Button zeigen. Die Texteingabe stellt den numerischen Wert der max simulierten, zu bearbeitenden Datensätze dar. Im Verlauf des Skripts wird der Variable jobs ein Zufallswert zugeordnet der im Bereich 1 bis Eingabe liegt. Die SUB Routine PercentageToArray berechnet welchen Prozentanteil ein Datensatz am Gesamten hat. Daraus erfolgt die Zusammenstellung wieviel Prozent nach jedem Datensatz erledigt sind. Der eigentliche Fortschrittsbalken ist ein farbiges JPG dessen Breite dynamisch während des "Abarbeitens" per Javascript geändert wird. Wer auf JS verzichten muss, kann die Ausgabe auch so anpassen das ein JPG mit der jeweiligen Breite neben dem vorherigen angelegt wird. Der fubar() Auruf ist hier nur als Verzögerung eingebunden um die Verarbeitung zu simulieren. |
<%
Server.ScriptTimeout = 9000
subbut = request("do_it")
to_val = request("to_val")
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title>Progressbar V2.0</title>
<script>
</script>
</head>
<body>
<%
if subbut = "go" then
subbut = ""
p = 0
Dim widthArr
jobs = getRandNum(to_val)
Call PercentageToArray()
%>
Jobs to do: <b><%=jobs%></b><br>
1 Percent: <b><%=p%></b><br>
<table width="160px" height="10px" cellspacing="0" cellpadding="0" border="0">
<tr>
<td width="30px" align="right" style="font-size:8pt">0% </td>
<td width="100px" height="10px">
<div style="background-color:#000000;border:1px solid red;width:100px; height:10px;">
<img src="filler.jpg" id="filler" width="1" height="10px">
</div>
</td>
<td width="30px" style="font-size:8pt"> 100%</td>
</tr>
</table>
<%
for i = 0 to jobs-1
fubar()
if widthArr(i) > 0 then
width = width + CInt(widthArr(i))
%>
<script>document.getElementById("filler").width=<%=width%>;</script>
<%
end if
next
end if
%>
<form method="post" action="progressbar.asp">
<input type="text" size="4" maxlength="4" name="to_val" value="5000"><br>
<input type="submit" name="do_it" value="go">
</form>
</body>
</html>
<%
function getRandNum(ByVal range)
randomize
getRandNum = Int((range - 1 + 1) * Rnd + 1)
end function
function fubar()
a = Timer()
while (b < a + 0.1)
b = Timer()
wend
end function
sub PercentageToArray()
p = 100/jobs
tmp = p
toArray = ""
total = 0
for i = 0 to jobs-1
if tmp < 1 then
toArray = toArray & "0,"
else
toArray = toArray & CStr(FIX(tmp)) & ","
total = total + FIX(tmp)
tmp = tmp - FIX(tmp)
end if
tmp = tmp + p
next
if total = 99 then toArray = toArray & "1,"
widthArr = split(Left(toArray,(len(toArray)-1)),",")
end sub
%>
|
||