2010-09-20 45 views
1

我有一个带两个dropdownlist控件的网页,每个控件绑定到单独的LinqDataSource对象。其中一个显示类别列表,另一个显示列表文章。类别选择驱动文章列表(至少,这是我的预期行为)。文章列表也根据用户语言偏好进行筛选,存储在会话中并应用于事件处理程序中。LinqDataSource“OnSelecting”事件不会触发回发

<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事件在后续回发中没有被触发,这是预期的bahaviour吗?如果是这样,我怎么解决这个得到什么?

回答

1

你需要调用DataBind上的CategoryDropDownList的SelectedIndexChanged事件DropDownList的。它不会自行发生的。

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