UpdatePanel中的控件丢失了值

时间:2012-03-28 16:27:21

标签: asp.net updatepanel

我有两个组合框,第一个触发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>

1 个答案:

答案 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控件的数据源。