2 つのドロップダウン リスト コントロールを含む Web ページがあり、それぞれが個別の LinqDataSource オブジェクトにバインドされています。1 つはカテゴリのリストを表示し、もう 1 つは記事のリストを表示します。カテゴリの選択は、記事のリストを駆動します (少なくとも、それが私の意図した動作です)。記事リストは、ユーザーの言語設定に基づいてフィルター処理され、セッションに保存され、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"
)、記事のドロップダウンが更新されません。つまり、OnSelecting イベントは後続のポストバックで発生しません。これは予想される動作ですか?どうすればこれを回避できますか?