上一篇学习了UpdateProgress,现在看看用JS脚本来控件它。
首先,用JS脚本控制它取消更新
先在UpdateProgress里放一个Html按钮,并设置它的onclick为自己定义的函数,如下:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Panel Rendered"></asp:Label>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Refresh" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<span style="font-size: 10pt; font-family: 宋体">Processing…<input id="Button2" type="button"
value="Cancel" onclick="CancelAsyncPostBack();" /></span>
</ProgressTemplate>
</asp:UpdateProgress>
再看一下自己定义的函数:
<script language="javascript" type="text/javascript">
function CancelAsyncPostBack()
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.abortPostBack();
}
</script>
注意var prm 一句要放在FUNCTION里面,否则可能会报Sys未定义的错误。
编译运行,单击refresh按钮并立即单击Cancle按钮结束异步更新,注意到UpdatePanel中的时间信息并没有更新。
再看看 通过客户端脚本显示或者隐藏进度信息
文中说到,
在下列情况下,UpdateProgress控件将不会自动显示:
由UpdateProgress控件关联的UpdatePanel之外的控件引发的异步更新。
UpdateProgress控件没有关联任何UpdatePanel,不在UpdatePanel中的控件引发的异步更新(例如用代码实现的更新)。
好像有点绕口,个人理解:
1、引发更新的控件不在UpdatePanel中
2、UpdateProgress和UpdatePanel没有关联
做例子去了。。。。。。
这个例子还是有点难度了,呵呵,看了半天,也遇到了几个麻烦,转到下一篇,好好说说。