Подтвердить что ты не робот

Невозможно выбрать несколько элементов в 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();
    }

Что я здесь делаю неправильно?

4b9b3361

Ответ 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".