Событие «OnSelecting» LinqDataSource не запускается на постбеках - PullRequest
1 голос
/ 20 сентября 2010

У меня есть веб-страница с двумя элементами управления выпадающего списка, каждый из которых связан с отдельными объектами LinqDataSource.Один отображает список Категории , а другой отображает список Статьи .Выбор категории определяет список статей (по крайней мере, это мое предполагаемое поведение).Список статей также фильтруется на основе предпочтений языка пользователя, сохраняется в сеансе и применяется в обработчике событий ArticleLinqDataSource_Selecting.

<asp:Label runat="server" Text="Category Code:" AssociatedControlID="CategoryDropDownList" />
<asp:DropDownList runat="server" ID="CategoryDropDownList" DataSourceID="CategoryLinqDataSource" DataValueField="CategoryID" DataTextField="CategoryCode" AutoPostBack="true" />
...
<asp:Label runat="server" Text="Article Code:" AssociatedControlID="ArticleCodeDropDown" />
<asp:DropDownList runat="server" ID="ArticleCodeDropDown" DataSourceID="ArticleLinqDataSource" DataValueField="ArticleID" DataTextField="ArticleCode" OnDataBound="ArticleCodeDropDown_DataBound" />
 ...
<asp:LinqDataSource runat="server" ID="CategoryLinqDataSource" 
  ContextTypeName="Article.Data.ArticleDataContext"
  TableName="Categories" Select="new (CategoryID, CategoryCode)">
</asp:LinqDataSource>
...
<asp:LinqDataSource runat="server" ID="ArticleLinqDataSource" 
  ContextTypeName="Arcicle.Data.ArticleDataContext"
  TableName="Articles" OrderBy="ArticleCode"
  Select="new (ArticleID, ArticleCode)"
  OnSelecting="ArticleLinqDataSource_Selecting">
</asp:LinqDataSource>

Все это прекрасно работает при первой загрузке страницы.Список категорий содержит все доступные значения категорий, и выбирается первая категория в списке.И соответствующие статьи для первой категории отображаются соответствующим образом в раскрывающемся меню «Статьи».Однако, когда я меняю категорию (постбэк происходит, потому что он установлен на AutoPostBack="true", выпадающий список Article не обновляется. Другими словами, событие OnSelecting не запускается при последующих постбэках.bahaviour? Если это так, как мне обойти это?

1 Ответ

1 голос
/ 21 октября 2010

Вам необходимо вызвать DataBind для DropDownList в событии SelectedIndexChanged CategoryDropDownList. Это не происходит само по себе.

, например

Protected Sub CategoryDropDownList_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CategoryDropDownList.SelectedIndexChanged
        ArticleCodeDropDown.DataBind()
End Sub
...