![]() |
![]() |
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 %> |
||