我有两个下拉列表和一个按钮。我在项目中使用了断点,一切正常。但是,一旦我退出按钮的功能,这就是我得到的错误:
不能在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();
}
我在这里做错了什么?
答案 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”。