【问题标题】:How do I add an UpdatePanel and its trigger programmatically?如何以编程方式添加 UpdatePanel 及其触发器?
【发布时间】:2012-11-26 21:47:40
【问题描述】:

我在 Page_Init 中添加了可变数量的更新面板。

我的母版页中已经有一个脚本管理器。

问题是当我尝试添加触发器时:

AsyncPostBackTrigger trig2 = new AsyncPostBackTrigger();

trig2.ControlID = ddl22.UniqueID;

trig2.EventName = "SelectedIndexChanged";

up2.Triggers.Add(trig2);

其中 ddl22 是 DropDownList,该事件似乎永远不会触发 UpdatePanel。

在 UpdatePanel 中,我有另一个 DropDownList,我想在触发发生时更改它的数据。

有趣的是,在母版页中我有一个计时器。这个计时器应该只触发主控中的更新面板,但它似乎触发了我所有的更新面板。但是,即使它触发了子页面中的更新面板,第二个 DropDownList 也不会更改其数据。

数据绑定到page_init 中UpdatePanel 中的DropDownList。它绑定到一个objectdatasource,该objectdatasource使用第一个DropDownList中的选定项作为参数来确定它应该绑定什么数据。

【问题讨论】:

    标签: c# asp.net ajax


    【解决方案1】:

    您是否为下拉列表设置了AutoPostBack="True"?我怀疑这是问题所在。

    还将您的更新面板模式设置为条件-UpdateMode="Conditional",这样我就不会影响其他更新面板。

    【讨论】:

      【解决方案2】:

      试试这个,

      在源代码中,

        <asp:UpdatePanel ID="up2" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
        <asp:DropDownList ID="ddl1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddl1_SelectedIndexChanged"></asp:DropDownList>    
        <asp:DropDownList ID="ddl2" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddl2_SelectedIndexChanged"></asp:DropDownList>
        </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="ddl2" />
        </Triggers>
        </asp:UpdatePanel>
      

      【讨论】:

        【解决方案3】:

        您可以手动调用 UpdatePanel 进行刷新,而无需在 postBack 事件上指定触发器。首先,set the UpdateMode property to 'Conditional',然后你可以从后面的代码中调用更新面板上的更新,比如

        MyUpdatePanel.Update();
        

        【讨论】:

          猜你喜欢
          • 2011-02-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-17
          • 2017-07-15
          • 2014-04-22
          相关资源
          最近更新 更多