【问题标题】:Trigger an update of the UpdatePanel by a control that is in different ContentPlaceHolder通过不同 ContentPlaceHolder 中的控件触发 UpdatePanel 的更新
【发布时间】:2009-01-06 16:11:46
【问题描述】:

我有一个包含两个 ContentPlaceHolder 的页面。一个有一个 DropDown 和另一个带有内容的 UpdatePanel。

当 DropDown 的 selectedItemChanged 事件在不同的 ContentPlaceholders 中时,如何触发对 UpdatePanel 的更新?

由于 UpdatePanel1 不知道 DropDown1,因此以下操作无效:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"  ChildrenAsTriggers="true">
    <ContentTemplate>
        Some content that needs to be updated here...
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="DropDown1" EventName="SelectedIndexChanged" />
    </Triggers>
</asp:UpdatePanel>

One way is to make an ajax page method that would be called by javascript on the page when DropDown's item is selected.然后在后面的代码中,在该页面方法中,调用 UpdatePanel1.Update()。

有没有更简单的选择?

【问题讨论】:

    标签: asp.net ajax updatepanel


    【解决方案1】:

    来自http://msdn.microsoft.com/en-us/library/system.web.ui.asyncpostbacktrigger.aspx

    控制 AsyncPostBackTrigger 引用必须 在同一个命名容器中 它所属的更新面板 扳机。基于触发器 其他命名容器中的控件 不支持。

    解决方法是使用控件的 UniqueID 触发器正在引用。不幸的是,UniqueID 不合格 直到控件被添加到其父级(及其父级) 已添加到其父级,一直向上到控制树)。

    在你后面的代码中,尝试:

    UpdatePanel1.Triggers.Add(new AsyncPostBackTrigger()
    {
        ControlID = DropDown1.UniqueID,
        EventName = "SelectedIndexChanged", // this may be optional
    });
    

    【讨论】:

    • @lucian.jp:记得把代码放在渲染的最晚。我忘记了atm在哪里,但它需要在控制层次结构完全构建后去。
    • 这对我有用。在执行 base.OnLoad 之后,我将代码放入 OnLoad 的覆盖中。
    【解决方案2】:

    在代码隐藏文件中,你应该可以做到:

    ScriptManager.RegisterAsyncPostBackControl(dropdown1);
    

    【讨论】:

    • 您的解决方案和接受的答案都对我有用。谢谢
    【解决方案3】:

    您可以通过在服务器端调用 updatePanel1.Update() 方法来强制更新任何页面 UpdatePanel。 例如,在 button1.Click 上更新 updatePanel1 时,调用 updatePanel2.Update(),两个面板都会更新。

    【讨论】:

    • 这不会阻止整个页面的回发。如果您使用控件的 UniqueID 将 load/init 上的触发器添加到面板,则只会更新面板
    猜你喜欢
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2011-10-03
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多