DropDownList所选索引更改

本文关键字:索引 DropDownList | 更新日期: 2023-09-27 18:25:58

我在Updatepanel中使用DropDownList,其autopost-back属性设置为true,除了SelectedValue=0(即SelectedIndex=0)之外,它的工作状态良好

这是我的下拉列表

<asp:UpdatePanel ID="panel" runat="server">
    <ContentTemplate>
        <asp:DropDownList ID="ddFilter" EnableViewState="false" runat="server" Style="width: 168px;
            border: none;" OnSelectedIndexChanged="ddComapanyFilter_SelectedIndexChanged"
            AutoPostBack="true">
            <asp:ListItem Text="All" Value="0"></asp:ListItem>
            <asp:ListItem Text="Flagged" Value="1"></asp:ListItem>
            <asp:ListItem Text="New" Value="2"></asp:ListItem>
        </asp:DropDownList>
    </ContentTemplate>
</asp:UpdatePanel>

这是我的SelectedIndexChangedEvent

protected void ddComapanyFilter_SelectedIndexChanged(object sender, EventArgs e)
{
    if (ddComapanyFilter.SelectedValue == "0")//All
    {
       //code
    }
    else if (ddComapanyFilter.SelectedValue == "1")//Flagged
    {
       //code
    }
    else if (ddComapanyFilter.SelectedValue == "2")//New
    {
       //code
    }          
}

当我选择"新建"或"标记"时,它可以正常工作,但当我再次选择"全部"时,他什么都不做,我已经尝试过调试它,以防"全部"未命中代码。

我试着用这个替换我的下拉代码

<asp:DropDownList ID="ddFilter" EnableViewState="false" runat="server" Style="width: 168px;
                                border: none;" OnSelectedIndexChanged="ddComapanyFilter_SelectedIndexChanged"
                                AutoPostBack="true">
                                <asp:ListItem Text="All" Value="1"></asp:ListItem>
                                <asp:ListItem Text="Flagged" Value="2" Selected="True"></asp:ListItem>
                                <asp:ListItem Text="New" Value="3"></asp:ListItem>
                            </asp:DropDownList>

现在,当我选择Flagged时,在选择New或All后,它不会命中

DropDownList所选索引更改

这是dropdownlist中的一个已知问题,总是第一个列表项不会激发,这就是为什么你可以在开头添加一个伪列表项,比如"Select.."或你想让它工作的

<asp:UpdatePanel ID="panel" runat="server">
    <ContentTemplate>
        <asp:DropDownList ID="ddFilter" EnableViewState="false" runat="server" Style="width: 168px;
            border: none;" OnSelectedIndexChanged="ddComapanyFilter_SelectedIndexChanged"
            AutoPostBack="true">
            <asp:ListItem Text="whatever" value=""></asp:ListItem>
            <asp:ListItem Text="All" Value="0"></asp:ListItem>
            <asp:ListItem Text="Flagged" Value="1"></asp:ListItem>
            <asp:ListItem Text="New" Value="2"></asp:ListItem>
        </asp:DropDownList>
    </ContentTemplate>
</asp:UpdatePanel>