dropdownlist SelectedIndexChanged在按钮单击时触发,如果它们具有相同的值

时间:2014-01-08 11:59:14

标签: c# asp.net

我有这样的代码:

on.aspx page

<asp:ListItem Value="1"> 1</asp:ListItem>
    <asp:ListItem Value="2"> 2</asp:ListItem>
    <asp:ListItem Value="2" Selected="True"> 3</asp:ListItem>
    <asp:ListItem Value="4"> 1</asp:ListItem>
    </asp:DropDownList>

 <br />
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />

在aspx.cs页面上

protected void Page_Load(object sender, EventArgs e)
{
    //do something
}


protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{

}

这里的问题是,当我点击按钮的时候DropDownList1_SelectedIndexChanged也会解雇。 当我走过去,发现这种情况发生的原因是不同的itemtext的价值相同。

 <asp:ListItem Value="2"> 2</asp:ListItem>
<asp:ListItem Value="2" Selected="True"> 3</asp:ListItem>

我无法改变价值。

有运气吗?或究竟是什么问题?

谢谢,

维杰

3 个答案:

答案 0 :(得分:2)

请检查DropDownList AutoPostBack属性。

如果AutoPostBack为真

  

获取或设置一个值,该值指示是否回发到服务器   当用户更改列表选择时自动发生。

答案 1 :(得分:0)

确保在网页上启用ViewState并将其添加到Page load

 if (!IsPostBack)
    {

        //do code here

    }

答案 2 :(得分:0)

选择更改时,

SelectedIndexChanged将触发。它没有考虑值或文本是否相同。

这就是为什么它被命名为SelectedIndexChanged&amp;不是 SelecteValueChanged SelectedTextChanged

因此,如果您想要SelectedIndexChanged事件,并且希望事件具有相同的ValueText,则不会触发。这是不可能的。

恕我直言:ValueText不应在DropDownList中重复。在绑定之前,您应该从DataSource中删除重复的值。