【问题标题】:UpdateProgress with Trigger not working带触发器的 UpdateProgress 不起作用
【发布时间】:2012-04-15 12:46:53
【问题描述】:

我正在尝试将 UpdateProgress 与触发器一起使用(参见下面的代码),但是当单击分配为 asyncPostBackTrigger 的按钮时,UpdateProgress 不起作用。 如果我删除 AssociatedUpdatePanelID 属性,UpdateProgress 控件将起作用。但是我想配置独立的 UpdateProgress 所以,我需要指定 UpdateProgress 控件的 AssociatedUpdatePanelID 属性。

这是应有的行为吗?

注意:我不想拦截 Sys.WebForms.PageRequestManager 实例并操作异步请求以手动显示 并隐藏 UpdateProgress 元素。有没有办法做到这一点?

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="AjaxExtensionsTest._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true"  runat="server">
    </asp:ScriptManager>
    <h2>
        Ajax Extensions Test
    </h2>
        <asp:UpdatePanel ID="up1" UpdateMode="Conditional" runat="server">
            <ContentTemplate>
                <div id="content">
                    <asp:TextBox ID="txtDataHora" runat="server"></asp:TextBox>
                    <asp:UpdateProgress ID="progress1"  AssociatedUpdatePanelID="up1"  DynamicLayout="true" DisplayAfter="0" runat="server">
                        <ProgressTemplate>
                            <div>
                                <img alt="progress" src="loading.gif" />
                            </div>
                        </ProgressTemplate>
                    </asp:UpdateProgress>
                </div>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="btnSubmit"  EventName="Click" />
            </Triggers>
        </asp:UpdatePanel>
    <asp:Button ID="btnSubmit" Text="Get Current Date/Time" runat="server" onclick="btnSubmit_Click" />
    <p>
    </p>
</asp:Content>
<script runat="server" language="csharp">

    protected void Page_Load(object sender, EventArgs e)
    {
        ScriptManager1.RegisterAsyncPostBackControl(btnSubmit);
    }

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        txtDataHora.Text = DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss");
        System.Threading.Thread.Sleep(2000);
    }
</script>

【问题讨论】:

    标签: c# asp.net asp.net-ajax updateprogress


    【解决方案1】:

    如果您需要使用 AsyncPostBackTrigger 和 AssociatedUpdatePanelID,那么您唯一的选择是处理 Sys.WebForms.PageRequestManager 实例上的事件并手动显示和隐藏 UpdateProgress 元素。有一些代码在服务器上运行,并注入必要的 JavaScript,这些 JavaScript 可以封装到控件中以使执行过程非常整洁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 2016-05-08
      • 2023-04-05
      • 2016-01-02
      相关资源
      最近更新 更多