我在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中的选定项作为参数来确定它应该绑定哪些数据。
答案 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();