ASP.NET UpdatePanel> Получить выбранное значение из списка проверки вне панели - PullRequest
0 голосов
/ 29 марта 2010

У меня есть список в UpdatePanel
У меня есть несколько фильтров для этого списка в виде элемента управления checkboxList. CheckboxList создается динамически при загрузке страницы

Во время обновления Ajax (обратной передачи) список флажков не заполняется из состояния просмотра, поэтому я не могу получить список для фильтрации.

Примечание. Если я помещаю элементы списка флажков непосредственно в разметку, все это работает, только если список не заполняется при обратной передаче.

protected override void OnLoad(EventArgs e)
{
    if (!Page.IsPostBack)
    {
        foreach (var p in global.Product)
            CheckListManufacurer.Items.Add(new ListItem(p, p));
    }
    base.OnLoad(e);
}


<form id="ProductListForm" runat="server">
<asp:ScriptManager ID="ScriptManager" runat="server" EnablePartialRendering="true"></asp:ScriptManager>
  <asp:CheckBoxList ID="CheckListManufacurer" runat="server" EnableViewState="true">
     <asp:ListItem Value="" Text="(All)"></asp:ListItem>
  </asp:CheckBoxList>  
  <asp:Button id="btnTestAjax" runat="server" Text="Test" />  
  <asp:UpdatePanel ID="ProductsPanel" runat="server" UpdateMode="Conditional">
      <Triggers>
          <asp:AsyncPostBackTrigger ControlID="btnTestAjax"  />
          <asp:AsyncPostBackTrigger ControlID="CheckListManufacurer" />
      </Triggers>
      <ContentTemplate>
          <sr:ProductList ID="Products" runat="server" />
      </ContentTemplate>
  </asp:UpdatePanel>
</form>

1 Ответ

1 голос
/ 29 марта 2010

если вы заполнили список в Page_Load, то вы опоздали.

в представлении жизненного цикла события страницы asp.net заполняется непосредственно перед Page_PreLoad (см. Здесь: http://msdn.microsoft.com/en-us/library/ms178472.aspx)

поэтому, если вы хотите, чтобы viewstate загружалось в элементы управления, которые вы динамически добавляете на страницу, вам нужно добавить их в Page_Init

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