Невозможно выбрать несколько элементов в DropDownList
У меня есть два раскрывающегося списка и кнопка. Я использовал точку останова в своем проекте, и все работает нормально. Но как только я выхожу из функции кнопки, это ошибка, которую я получаю:
Невозможно выбрать несколько элементов в 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();
}
Что я здесь делаю неправильно?
Ответы
Ответ 1
Убедитесь, что вы не привязываете несколько ddls к одному и тому же источнику данных.
Выбирается атрибут элемента, поэтому, если разные ddls
выберите различные элементы из одного источника данных, каждый из ddls попадает
с несколькими выбранными элементами, что, вероятно, происходит здесь.
Ответ 2
Обычно эта ошибка возникает, когда вы загружаете свой ddl следующим образом:
ddl.FindByValue("parameter").Selected = true;
Чтобы преодолеть эту ошибку, вы должны очистить предыдущий выбор вашего ddl следующим образом:
ddl.ClearSelection();
ddl.FindByValue("parameter").Selected = true;
Или вы можете сделать следующее:
ddl.SelectedItem = "parameter";
Надеюсь, я смогу помочь кому-то.; -)
Ответ 3
Этот код решит эту проблему:
YourDropDownId.ClearSelection();
Ответ 4
Я попытался добавить два других элемента списка в начало списка DropDownList
после чтения данных в DropDownList
.
Один из предметов был "пожалуйста, выберите один...", а второй - "Не указан здесь...".
Итак, я создал элемент списка:
ListItem li1 = new ListItem("please pick one...", "999");
ListItem li2 = new ListItem("not listed here...", "555");
Затем я попытался добавить эти два ListItems
к трем DropDownList
. После этого я столкнулся с той же ошибкой.
После создания новых экземпляров ListItem для каждого DropDownList
проблема исчезла...
Ответ 5
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();
}
}
Ответ 6
В предыдущем ответе упоминается ddl.SelectedItem = "parameter";
как опция. Однако SelectedItem
- только для чтения.
Использование ddl.SelectedValue = "value"
также решит ошибку OP.
Ответ 7
Найден другой способ получить ошибку:
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);
}
Строка ddlFromBudget.Items.Add(newItem);
устанавливает newItem.Selected = True
.
Без строки newItem = new ListItem();
вы получите ошибку, потому что выбранный флаг теперь верен для обоих элементов, добавленных в ddl.
Ответ 8
** Если вы проверяете, что оба выпадающего списка выбрали индекс, должен быть выше 0. Затем вы должны проверить его как
if (ddlPlayer1.SelectedIndex > 0 || ddlPlayer2.SelectedIndex > 0)
{}
Я думаю, что ошибка приходит к использованию "DropDownList1.SelectedItem.Value".