如何以编程方式添加UpdatePanel及其触发器?

时间:2012-11-26 21:47:41

标签: c# asp.net ajax

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

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

问题在于,当我尝试添加类似的触发器时:

AsyncPostBackTrigger trig2 = new AsyncPostBackTrigger();

trig2.ControlID = ddl22.UniqueID;

trig2.EventName = "SelectedIndexChanged";

up2.Triggers.Add(trig2);

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

试试这个,

在源代码中,

  <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>

答案 2 :(得分:0)

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

MyUpdatePanel.Update();