C# 中继器标头模板中的dropdownlist不工作

C# 中继器标头模板中的dropdownlist不工作,c#,repeater,code-behind,html-select,C#,Repeater,Code Behind,Html Select,我已经设置了我认为是正确的标记和代码,将dropdownlist放在中继器的头模板中,但是由于某些原因,它不能正常工作。最初我看到了下拉列表,但当我在列表中进行选择时,OnSelectedIndexChanged事件似乎不会触发使用添加的方法来处理它,我无法找出我缺少了什么,因为我认为这是一件简单的事情 以下是标记的要点: <asp:Repeater ID="repNewsItems" runat="server"> <HeaderTemplate> &l

我已经设置了我认为是正确的标记和代码,将dropdownlist放在中继器的头模板中,但是由于某些原因,它不能正常工作。最初我看到了下拉列表,但当我在列表中进行选择时,OnSelectedIndexChanged事件似乎不会触发使用添加的方法来处理它,我无法找出我缺少了什么,因为我认为这是一件简单的事情

以下是标记的要点:

<asp:Repeater ID="repNewsItems" runat="server">
<HeaderTemplate>
        <asp:DropDownList ID="ddDateSortCategories" runat="server" Width="200" AutoPostBack="true" OnSelectedIndexChanged="ddDateSortCategories_SelectedIndexChanged1" CssClass="mergersDropDown">
            <asp:ListItem Selected="True" Text="Most Recent" Value="newest"></asp:ListItem>
            <asp:ListItem Text="Oldest" Value="oldest"></asp:ListItem>
        </asp:DropDownList>
</HeaderTemplate>

<ItemTemplate>
    // other stuff

我发现上面的代码有两个问题。首先,我错误地将我的列表项绑定到我的dropdownlist,这意味着硬编码的列表项不会改变。但这并没有解决我的主要问题。我所做的是,我忘了包装这些:

repNewsItems.ItemDataBound += new RepeaterItemEventHandler(repNewsItems_ItemDataBound);
repNewsItems.DataSource = (string.IsNullOrEmpty(NewsNodeIds))
                                    ? GetNewsItemsForYear(NewsYearToDisplay, _category)
                                    : DaNews;
repNewsItems.DataBind();
在一个

条件语句。这意味着每次激发回发事件时,它都会进入Page_Load方法,在初始状态下重新绑定整个中继器,并且永远不会让它传递给我的SelectedIndexChanged事件处理程序ddDateSortCategories_SelectedIndexChanged1

repNewsItems.ItemDataBound += new RepeaterItemEventHandler(repNewsItems_ItemDataBound);
repNewsItems.DataSource = (string.IsNullOrEmpty(NewsNodeIds))
                                    ? GetNewsItemsForYear(NewsYearToDisplay, _category)
                                    : DaNews;
repNewsItems.DataBind();
if (!IsPostBack) {}