45 votes

Comment SÉLECTIONNER un élément de liste déroulante par valeur de façon programmatique ?

Comment sélectionner un élément de liste déroulante par valeur de manière programmatique en C#.NET ?

0 votes

Vous cherchez un moyen de faire cela en utilisant l'automatisation (disons pour les tests) ?

1 votes

Est-ce pour WinForms, WPF, web ?

0 votes

Non, je veux juste sélectionner le pays par valeur en fonction de la valeur que j'ai dans la base de données.

85voto

ScottE Points 11633

Si vous savez que la liste déroulante contient la valeur que vous cherchez à sélectionner, utilisez :

ddl.SelectedValue = "2";

Si vous n'êtes pas sûr que la valeur existe, utilisez (ou vous obtiendrez une exception de référence nulle) :

ListItem selectedListItem = ddl.Items.FindByValue("2");

if (selectedListItem != null)
{
    selectedListItem.Selected = true;
}

3 votes

Voici la même 2ème solution mais en une seule ligne de code : ddl.Items.FindByValue("2").Selected=true ;

0 votes

La liste déroulante se trouve dans une fenêtre pop-up qui a été remplie au chargement de la page. J'essaie de définir l'index sélectionné avant d'afficher la fenêtre contextuelle, mais cela ne fonctionne pas. Pouvez-vous m'aider ? stackoverflow.com/questions/28883433/

25voto

womp Points 71924

Veuillez essayer ci-dessous :

myDropDown.SelectedIndex = 
myDropDown.Items.IndexOf(myDropDown.Items.FindByValue("myValue"))

0 votes

La valeur devient -1 dans myDropDown.SelectedIndex pourquoi ?

1 votes

Probablement parce que myDropDown.Items ne contient pas d'élément "myValue".

0 votes

IndexOf() renvoie -1 si l'élément n'est pas dans la collection. FindByValue() ne trouve pas l'élément que vous recherchez. Il suffit de le séparer en plusieurs instructions si vous avez besoin de le déboguer.

6voto

Ian Boyd Points 50743
ddl.SetSelectedValue("2");

Avec une extension pratique :

public static class WebExtensions
{

    /// <summary>
    /// Selects the item in the list control that contains the specified value, if it exists.
    /// </summary>
    /// <param name="dropDownList"></param>
    /// <param name="selectedValue">The value of the item in the list control to select</param>
    /// <returns>Returns true if the value exists in the list control, false otherwise</returns>
    public static Boolean SetSelectedValue(this DropDownList dropDownList, String selectedValue)
    {
        ListItem selectedListItem = dropDownList.Items.FindByValue(selectedValue);

        if (selectedListItem != null)
        {
            selectedListItem.Selected = true;
            return true;
        }
        else
            return false;
    }
}

Note : Tout code est libéré dans le domaine public. Aucune attribution n'est requise.

2voto

Prado Points 101

Il s'agit d'un moyen simple de sélectionner une option dans une liste déroulante en fonction d'une valeur de chaîne.

private void SetDDLs(DropDownList d,string val)
    {
        ListItem li;
        for (int i = 0; i < d.Items.Count; i++)
        {
            li = d.Items[i];
            if (li.Value == val)
            {
                d.SelectedIndex = i;
                break;
            }
        }
    }

1voto

Henk Holterman Points 153608
combobox1.SelectedValue = x;

Je pense que vous voulez entendre autre chose, mais c'est ce que vous avez demandé.

0 votes

Vous ne pouvez pas, car la valeur sélectionnée ne reçoit que la valeur non définie.

0 votes

David - en fait, vous avez tort. Faites un essai, et si vous avez donné le -1, vous devriez probablement le supprimer ! Vous obtiendrez bien sûr une exception si la valeur n'existe pas, mais sinon cela fonctionne très bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X