本文将利用Asp.Net的回调机制使用Js实现一个简易进度条,其效果如下:

首先,在HTML文档中加入如下代码:
Js部分加入如下Js代码:
css样式文件中加入如下代码:
Asp.Net服务端实现回调代码如下:
这样,一个简易的进度条就实现了,运行即可得到如页首处的效果。

首先,在HTML文档中加入如下代码:
- <div>
- <tableclass="statusTable">
- <tr>
- <tdid="progress1">
- </td>
- <tdid="progress2">
- </td>
- <tdid="progress3">
- </td>
- <tdid="progress4">
- </td>
- <tdid="progress5">
- </td>
- <tdid="progress6">
- </td>
- <tdid="progress7">
- </td>
- <tdid="progress8">
- </td>
- <tdid="progress9">
- </td>
- <tdid="progress10">
- </td>
- </tr>
- </table>
- <asp:LabelID="Label1"runat="server"ForeColor="Red"Text="0"></asp:Label>
- </div>
- <div>
- <inputid="btnRequest"type="button"value="请求"onclick="Request()"/>
- <inputid="btnStop"type="button"value="停止"disabled="disabled"onclick="Stop()"/>
- </div>
- <scriptlanguage="javascript"type="text/javascript">
- varidx=0;
- varprogressTimer;
- varprogressInterval=1000;
- functionRequest()
- {
- document.getElementById("btnStop").disabled="";
- document.getElementById("btnRequest").disabled="disabled";
- if(idx>=10)
- {
- Clear();
- return;
- }
- vararg=idx;
- <%=ClientScript.GetCallbackEventReference(this,"arg","GetMsgBack",null)%>;
- idx++;
- progressTimer=setTimeout('Request()',progressInterval);
- }
- functionGetMsgBack(result)
- {
- document.getElementById('progress'+idx).style.backgroundColor='blue';
- varstatus=Number(result)*10;
- document.getElementById("Label1").innerHTML=status+"%";
- }
- functionStop()
- {
- clearTimeout(progressTimer);
- Clear();
- }
- functionClear()
- {
- idx=0;
- document.getElementById("btnStop").disabled="disabled";
- document.getElementById("btnRequest").disabled="";
- document.getElementById("Label1").innerHTML="0";
- for(vari=1;i<=10;i++)
- document.getElementById('progress'+i).style.backgroundColor='transparent';
- }
- </script>
- .statusTable
- {
- width:100px;
- border:solid1px#000000;
- padding-bottom:0px;
- margin-bottom:0px;
- }
- .statusTabletd
- {
- height:20px;
- }
- publicpartialclassDigitStatus:System.Web.UI.Page,ICallbackEventHandler
- {
- privatestringAspEventArgs;
- protectedvoidPage_Load(objectsender,EventArgse)
- {
- }
- publicvoidRaiseCallbackEvent(stringEventArgs)
- {
- AspEventArgs=EventArgs;
- }
- publicstringGetCallbackResult()
- {
- inti=Convert.ToInt32(AspEventArgs);
- i++;
- returni.ToString();
- }
- }