Dans vb.net/winforms, comment une hashtable peut-elle être liée à une liste déroulante ou à tout autre contrôle piloté par des sources de données?Comment une table de hachage peut-elle être liée à une liste déroulante?
Répondre
Est-ce WinForms, WPF ou asp.net? [Mise à jour: ahh ... ;-P WinForms]
WinForms veut être données IList
(ou, indirectement, par l'intermédiaire IListSource
) - donc je devine (le commentaire) que vous utilisez WinForms. Aucune des collections de type dictionnaire incorporées n'implémente IList
, mais pour être honnête, cela n'a pas d'importance: si vous avez une liaison de données, le volume est probablement assez petit, donc une liste régulière devrait suffire.
La meilleure option est quelque chose comme List<T>
ou BindingList<T>
, où T
a toutes les propriétés que vous voulez lier. Est-ce une option? Si vous êtes bloqué avec 1.1 (puisque vous mentionnez HashTable
au lieu de Dictionary<,>
), utilisez ArrayList
.
Exemple (en C#):
class MyData
{
public int Key { get; set; }
public string Text { get; set; }
}
[STAThread]
static void Main()
{
var data = new List<MyData>
{
new MyData { Key = 1, Text = "abc"},
new MyData { Key = 2, Text = "def"},
new MyData { Key = 3, Text = "ghi"},
};
ComboBox cbo = new ComboBox
{
DataSource = data,
DisplayMember = "Text",
ValueMember = "Key"
};
cbo.SelectedValueChanged += delegate {
Debug.WriteLine(cbo.SelectedValue);
};
Application.Run(new Form {Controls = {cbo}});
}
Vous avez absolument raison - c'est un projet winforms. Je n'avais pas réalisé qu'il y aurait une telle différence. Merci beaucoup. – Jeffrey
Il suffit d'utiliser la propriété des listes déroulantes Datasource
DropDownList dd = new DropDownList();
Hashtable mycountries = New Hashtable();
mycountries.Add("N","Norway");
mycountries.Add("S","Sweden");
mycountries.Add("F","France");
mycountries.Add("I","Italy");
dd.DataSource=mycountries;
dd.DataValueField="Key";
dd.DataTextField="Value";
dd.DataBind();
Cela pour une raison quelconque me donne cette erreur: "DataBinding complexe accepte comme une source de données soit un IList ou un IListSource." – Jeffrey
Je ne sais pas pourquoi cela se produirait .. est l'exception étant levée par la ligne DataBind()? –
myCtrl.DataSource = myHashtable
myCtrl.DataBind()
source Exemple de contrôle bindable:
<itemtemplate>
<%# DataBinder.Eval(Container.DataItem, "Key", "<td>{0}</td>") %>
<%# DataBinder.Eval(Container.DataItem, "Value", "<td>${0:f2}</td>") %>
</itemtemplate>
Exemple pour un objet donné appelé Ordre:
List<Order> list = new List<Order>{};
foreach (Order o in OOS.AppVars.FinalizedOrders.Values)
{
list.Add(o);
}
this.comboBox_Orders.DataSource = list;
this.comboBox_Orders.DisplayMember = "Description";
Ce qui est cool à ce sujet est que vous pouvez alors récupérer les données de la liste comme l'objet original (pas seulement le champ de valeur comme dans asp.net).
Order order = (Order)this.comboBox_Orders.SelectedValue;
Et, si vous arrive d'utiliser le dictionnaire comme source de données, vous pouvez utiliser
MyDDL.Datasouce = myDict.ToList();
et il le convertir en un type de liste.
Utilisez .tolist. Cela fonctionne également pour les types complexes retournés que vous obtenez des vues/procédures stockées dans le framework d'entité
- 1. Meilleure façon d'ajouter des valeurs supplémentaires à une zone de liste déroulante WinForms basée sur une table de hachage
- 2. Comment ajouter une valeur vide ou personnalisée à une liste déroulante liée?
- 3. Ajouter une entrée vide à la liste déroulante liée à la liste des entités
- 4. comment lier une liste à une liste déroulante? (Winforms)
- 5. WPF/DeferRefresh avec la liste déroulante liée
- 6. Comment trier une liste liée en SQL?
- 7. C#: Liaison de la table de hachage à la zone de liste déroulante
- 8. ToolTipping une liste déroulante
- 9. Liste déroulante hors table Rails
- 10. Comment styliser une zone de liste déroulante?
- 11. Excel - Croix Rouge où une liste déroulante devrait être
- 12. Ajouter la validation à une liste déroulante
- 13. Comment une liste déroulante non modifiable (zone de liste modifiable) doit-elle être formatée dans Winforms?
- 14. Envoyer un onclick à une liste déroulante
- 15. SQL UPDATE SET une colonne doit être égale à une valeur dans une table liée référencée par une colonne différente?
- 16. Entité Modèle et liaison Étiquette à une table non liée
- 17. Comment mapper une table liée à une entité héritée (table par hiérarchie)?
- 18. Comment copier une table liée à une table locale dans Ms Access par programmation?
- 19. Comment modifier une liste déroulante javascript
- 20. Comment créer une liste déroulante silverlight?
- 21. Critères NHibernate pour une table non liée
- 22. Auto remplir une zone de liste déroulante
- 23. WPF, liaison bidirectionnelle à une table de hachage
- 24. Asp.net: Comment trier une liste déroulante ayant des doublons?
- 25. CakePHP - Modèles associés dans une table de relations, affichés dans une liste déroulante?
- 26. comment présélectionner une option dans une liste déroulante en javascript?
- 27. UltraWebGrid: Comment utiliser une liste déroulante dans une colonne
- 28. concaténer deux champs dans une liste déroulante
- 29. Comment puis-je renseigner une autre liste déroulante avec l'événement onChange de la première liste déroulante?
- 30. Comment parcourir une liste liée en utilisant une compréhension de liste?
Si cela fait une différence, j'utilise vraiment un System.Windows.Forms.Combobox, avec le style déroulant DropDownList. – Jeffrey