我有两个组合框,第一个触发updatepanel更新第二个:
protected void cb1_SelectedIndexChanged(object sender, EventArgs e)
{
cb2.DataSource = DT1;
cb2.DataBind();
}
问题是,当我点击按钮时,除了UpdatePanel中的一个值之外,所有值都没问题,因此updatepanel会以某种方式重置子控件上的选定索引。
知道如何解决这个问题吗?
我了解会话,但我不知道将cb2的值分配给会话的步骤。
感谢。
更新,aspx
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="False"
UpdateMode="Conditional">
<dx:ASPxComboBox ID="cb2" runat="server" Height="22px" ValueField="ID"
ValueType="System.Int32" Width="170px">
<Columns>
<dx:ListBoxColumn Caption="ID" FieldName="ID" Visible="False" />
<dx:ListBoxColumn Caption="City" FieldName="City" />
</Columns>
</dx:ASPxComboBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger
ControlID="cb1" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
答案 0 :(得分:2)
这里有几件事:你有ChildrenAsTriggers="False"
,但你有一个儿童控件的异步回发trigeer:&#39; cb2&#39;。我认为你应该删除 ChildrenAsTriggers="False"
属性(&#34; true&#34;是默认值)你可能想要将ansync postback trigeer设置为`cb1&#39;控制如下:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<dx:ASPxComboBox ID="cb2" runat="server" Height="22px" ValueField="ID"
ValueType="System.Int32" Width="170px">
<Columns>
<dx:ListBoxColumn Caption="ID" FieldName="ID" Visible="False" />
<dx:ListBoxColumn Caption="City" FieldName="City" />
</Columns>
</dx:ASPxComboBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="cb1" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
此外,我认为您复制的原始代码缺少开头<ContentTemplate>
标记。
此时你的cb1控制事件`cb1_SelectedIndexChanged&#39;应该触发并能够在上面的UpdatePanel中更新cb2控件的数据源。