上一篇学习了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没有关联

做例子去了。。。。。。

这个例子还是有点难度了,呵呵,看了半天,也遇到了几个麻烦,转到下一篇,好好说说。

posted on 2007-01-24 11:09  HenryZhang  阅读(238)  评论(0编辑  收藏  举报