无法在DropDownList中选择多个项目

时间:2011-02-28 04:46:27

标签: c# asp.net .net

我有两个下拉列表和一个按钮。我在项目中使用了断点,一切正常。但是,一旦我退出按钮的功能,这就是我得到的错误:

  

不能在DropDownList中选择多个项目。

以下是该按钮的代码:

 protected void Button1_Click(object sender, EventArgs e)
    {

        if (ddlPlayer1.SelectedItem.Value != "0" || ddlPlayer2.SelectedItem.Value != "0" && ddlPlayer1.SelectedItem.Value != ddlPlayer2.SelectedItem.Value)
        {
            lblPlayer1Score.Text = Repository.Instance.ReturnScore(ddlPlayer1.SelectedValue.ToString(), ddlPlayer2.SelectedValue.ToString()).Rows[0][0].ToString();
            lblPlayer2Score.Text = Repository.Instance.ReturnScore(ddlPlayer2.SelectedValue.ToString(), ddlPlayer1.SelectedValue.ToString()).Rows[0][0].ToString();


        }

        ddlPlayer1.DataBind();
        ddlPlayer2.DataBind();
    }

我在这里做错了什么?

8 个答案:

答案 0 :(得分:102)

通常在您按如下方式加载ddl时会发生此错误:

ddl.FindByValue("parameter").Selected = true; 

要克服此错误,您应该清除以前选择的ddl,如下所示:

ddl.ClearSelection();
ddl.FindByValue("parameter").Selected = true; 

或者您可以执行以下操作:

ddl.SelectedItem = "parameter";

我希望我能帮助别人。 ; - )

答案 1 :(得分:49)

确保您没有将多个ddls数据绑定到同一数据源。 被选中是项的属性,因此,如果不同的ddls 从同一数据源中选择不同的项目,每个ddls结束 选择了多个项目,这可能是这里发生的事情..

答案 2 :(得分:18)

此代码将解决此问题:

YourDropDownId.ClearSelection(); 

答案 3 :(得分:2)

我在将数据读入DropDownList后尝试将其他两个列表项添加到DropDownList列表的顶部。

其中一个项目是“请选择一个......”,第二个项目是“此处未列出......”。 所以我创建了一个列表项:

ListItem li1 = new ListItem("please pick one...", "999");
ListItem li2 = new ListItem("not listed here...", "555");

然后我尝试将这两个ListItems添加到三个DropDownList。之后我遇到了同样的错误。

为每个DropDownList创建新的ListItem实例后,问题就消失了......

答案 4 :(得分:0)

 protected void Button1_Click(object sender, EventArgs e)
    {

        if (ddlPlayer1.SelectedIndex>0 || ddlPlayer2.SelectedIndex>0)
        {
            lblPlayer1Score.Text = Repository.Instance.ReturnScore(ddlPlayer1.SelectedValue.ToString(), ddlPlayer2.SelectedValue.ToString()).Rows[0][0].ToString();
            lblPlayer2Score.Text = Repository.Instance.ReturnScore(ddlPlayer2.SelectedValue.ToString(), ddlPlayer1.SelectedValue.ToString()).Rows[0][0].ToString();


        }

    }

答案 5 :(得分:0)

之前的回答提到ddl.SelectedItem = "parameter";作为选项。但是,SelectedItem是只读的。

使用ddl.SelectedValue = "value"也将解决OP的错误。

答案 6 :(得分:0)

Found another way to get the error:

        ddlFromBudget.Items.Clear();

        ListItem newItem = new ListItem();
        newItem.Text = "Not Set";
        newItem.Value = "0";
        ddlFromBudget.Items.Add(newItem);

        if (ddlB1.SelectedValue.ToString() != "0")
        {
            newItem = new ListItem();
            newItem.Text = ddlB1.SelectedItem.ToString();
            newItem.Value = "1";
            ddlFromBudget.Items.Add(newItem);
        }

The line ddlFromBudget.Items.Add(newItem); sets newItem.Selected = True. Without the line newItem = new ListItem();, you get the error because the selected flag is now true on both items added to the ddl.

答案 7 :(得分:-1)

**如果您正在检查两个下拉列表选择的索引应该是否大于0.那么您应该检查它 if(ddlPlayer1.SelectedIndex> 0 || ddlPlayer2.SelectedIndex> 0) {}

我认为错误是使用“DropDownList1.SelectedItem.Value”。