Элемент управления в UpdatePanel теряет значение - PullRequest
0 голосов
/ 28 марта 2012

У меня есть два комбинированных списка, первый запускает панель обновления, которая обновляет второй:

        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 Ответ

2 голосов
/ 29 марта 2012

Несколько вещей здесь: у вас есть ChildrenAsTriggers="False", но у вас есть асинхронный триггер обратной передачи для дочернего элемента управления: 'cb2'.Я думаю, вам следует удалить свойство ChildrenAsTriggers="False" ("true" - это значение по умолчанию), и вы, вероятно, хотели установить триггер обратной синхронизации ansync в элемент управления `cb1 ', как показано ниже:

   <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 'должно сработать и иметь возможность обновить источник данных элемента управления cb2 в UpdatePanel выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...