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);
8 Réponses :
Addrange veut un tableau de liste de lecture. Vous pouvez le faire comme ceci (C # 3 +).
drpTypesCreateEdit.Items.AddRange(drpTypes.Items.OfType<ListItem>().ToArray());
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.
Ce serait l'un des moyens plus faciles. Avez-vous besoin de quelque chose de plus élaboré? P> P>
Merci, mais pas ce que je cherchais
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();
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()
foreach (ListItem liItems in ListitemsArray) { DropDownList2.Items.Add(liItems); }
Je l'ai fait de cette façon directement d'une descente à une autre coupe la nécessité de copier en premier.
J'ai utilisé comme ceci
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.
dans vb j'ai utilisé ou p> Dim cb As CheckBoxList=new CheckBoxList()
cb.DataSource = CheckBoxList_Source.Items
cb.DataBind()