Comment puis-je utiliser une liste comme avec DataGridView.DataSource?

.net c# dapper datagridview

Question

J'essaie de lier une List<dynamic> à une propriété DataGridView DataSource. Bien qu'il n'y ait pas d'erreurs lors de la compilation, aucune colonne n'est affichée non plus.

Si je pré-crée la colonne, j'affiche les lignes, mais elles ne contiennent aucune donnée.

En termes simples, comment puis-je utiliser correctement un objet List<dynamic> avec mon DataGridView?

Réponse acceptée

Si ma mémoire est bonne, la requête dynamique de Dapper renvoie une collection de ExpandoObject qui vous permet d'accéder de manière dynamique à des propriétés telles que person.Name , mais les objets sous-jacents ne possèdent pas de propriété Name . Il utilise une liaison d'exécution pour extraire les données d'un dictionnaire de clé / valeur interne. Étant donné que la liaison de données par défaut pour DataGridView utilise la réflexion pour obtenir les propriétés des objets, elle ne trouve pas les colonnes renvoyées par la requête.

Donc, vous avez quelques options:

  • Hydrater le résultat comme un type concret au lieu de dynamic
  • Spécifiez les colonnes que vous souhaitez afficher dans votre DataGridView plutôt que d'utiliser la liaison par défaut.
  • Convertir le résultat dynamique en un DataTable utilisant quelque chose de similaire à cette réponse .



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi