DropDownList选择的索引更改

时间:2013-08-03 07:53:17

标签: c# asp.net

我在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
    }          
}

当我选择New或Flagged时它工作正常,但是当我再次选择All时,它没有做任何事情,我已经尝试调试它,以防所有它没有命中代码。

我试过用这个

替换我的下拉代码
<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>

现在当我选择标记时,选择新建或全部后,它没有点击

1 个答案:

答案 0 :(得分:2)

这是dropdownlist中的一个已知问题,总是第一个列表项不会触发,这就是为什么你可以在开头添加一个虚拟列表项,如“选择..”或者你想让它工作的原因

<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>