10
votes

Comment copier des articles d'une liste déroulante à une autre

Comment puis-je copier des éléments à partir d'une boîte de déroulée à une autre zone de liste déroulante en gardant les clés et les valeurs?

drpTypes.Items.Add(new ListItem("Tipos de Acções", "1"));
drpTypes.Items.Add(new ListItem("Tipos de Combustível", "2"));
drpTypes.Items.Add(new ListItem("Tipos de Condutor", "3"));

drpTypesCreateEdit.Items.AddRange(drpTypes.Items);


0 commentaires

8 Réponses :


29
votes

Addrange veut un tableau de liste de lecture. Vous pouvez le faire comme ceci (C # 3 +).

drpTypesCreateEdit.Items.AddRange(drpTypes.Items.OfType<ListItem>().ToArray()); 


4 commentaires

Je n'ai pas cette méthode dans les articles :(


Quelle version de .NET utilisez-vous? Si 3,5+, ajoutez une instruction Utilisation de System.Linq. Si 2.0, vous pouvez simplement choisir d'itérer les éléments dans la première liste et les ajouter à un par un à la seconde.


Cela ne fera pas le même objet Listitem parmi plusieurs liste déroulante? Qui pourrait conduire à des conflits dans certains scénarios?


Oui, cela se produirait. J'ai ajouté cela à mon post ci-dessous.



3
votes

Ce serait l'un des moyens plus faciles. XXX

Avez-vous besoin de quelque chose de plus élaboré?


1 commentaires

Merci, mais pas ce que je cherchais



10
votes

D'accord avec le commentaire d'Anthony ci-dessus.

Toutefois, étant donné que la liste sélectionnée se réfère toujours aux mêmes objets de la liste déroulante originale, il y aura des effets secondaires inattendus lors de la modification des champs / propriétés. p>

Par exemple: P>

drpTypesCreateEdit.Items.AddRange(drpTypes.Items.Cast<ListItem>().Select(x => New ListItem(x.Text, x.SelectedValue)).ToArray();


0 commentaires

4
votes

Je ne pouvais pas comprendre cela dans vb.net et il m'a fallu un moment pour trouver cette réponse. Duplication DropdownListitems sans boucle

DropDownList2.DataSource = DropDownList1.Items
DropDownList2.DataTextField = "Text"
DropDownList2.DataValueField = "Value"
DropDownList2.DataBind()


0 commentaires

0
votes
            foreach (ListItem liItems in ListitemsArray)
            {
                DropDownList2.Items.Add(liItems);
            }

0 commentaires

0
votes

Je l'ai fait de cette façon directement d'une descente à une autre coupe la nécessité de copier en premier. XXX


0 commentaires

0
votes

J'ai utilisé comme ceci xxx


1 commentaires

Ajouter une solution générique avec plus d'explications et de code. Cette réponse est bien et fonctionne pour vous, mais dans l'ordre répond à cette question, vous devez nommer les noms de variable généraux et explications qui ne sont pas spécifiques à votre code ni à votre scénario.



0
votes

dans vb j'ai utilisé xxx pré>

ou p>

Dim cb As CheckBoxList=new CheckBoxList()
cb.DataSource = CheckBoxList_Source.Items
cb.DataBind()


0 commentaires