web-dev-qa-db-fra.com

Impossible de sélectionner plusieurs éléments dans une liste déroulante

J'ai deux liste déroulante et un bouton. J'ai utilisé le point d'arrêt dans mon projet et tout fonctionne bien. Mais dès que je sors de la fonction du bouton, c'est l'erreur que je reçois:

Impossible de sélectionner plusieurs éléments dans une liste déroulante.

Voici mon code pour ce bouton:

 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();
    }

Qu'est-ce que je fais mal ici?

34
RG-3

Assurez-vous de ne pas lier plusieurs ddls à la même source de données . La sélection étant un attribut d'un élément, par conséquent, si différents ddlssélectionnent des éléments différents de la même source de données, chacun des ddls se termine. avec plusieurs éléments sélectionnés qui est probablement ce qui se passe ici ..

49
Rudrik

Habituellement, cette erreur se produit lorsque vous chargez votre ddl comme suit: 

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

Pour surmonter cette erreur, vous devez effacer la sélection précédente de votre ddl comme suit:

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

Ou vous pouvez faire comme suit:

ddl.SelectedItem = "parameter";

J'espère pouvoir aider quelqu'un. ;-)

101
DS Delcio

Ce code va résoudre ce problème: 

YourDropDownId.ClearSelection(); 
18
alaasdk

J'essayais d'ajouter deux autres éléments de liste en haut de la liste de DropDownList après avoir lu des données dans DropDownList.

L'un des éléments était "Veuillez en choisir un ...", et le second était "Ne figure pas ici ..." . J'ai donc créé un élément de liste

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

Ensuite, j'ai essayé d'ajouter ces deux ListItems aux trois DropDownList. Après cela, j'ai rencontré la même erreur. 

Après avoir créé de nouvelles instances ListItem pour chaque DropDownList, le problème a disparu ... 

2
zkanoca

Trouvé un autre moyen d'obtenir l'erreur:

        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);
        }

La ligne ddlFromBudget.Items.Add(newItem); définit le newItem.Selected = True. Sans la ligne newItem = new ListItem();, vous obtenez le message d'erreur car l'indicateur sélectionné est désormais défini sur True sur les deux éléments ajoutés au ddl.

0
CSwanson
 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();


        }

    }
0
RG-3

Une réponse précédente mentionne ddl.SelectedItem = "parameter"; en tant qu'option. Cependant, SelectedItem est en lecture seule. 

Utiliser ddl.SelectedValue = "value" résoudra également l'erreur de l'OP.

0
peroija