Maison > Article > base de données > Pourquoi ma liste WinForms affiche-t-elle \"System.Data.DataRowView\" au lieu des valeurs attendues ?
Rencontrer "System.Data.DataRowView" lorsque vous attendez des valeurs réelles dans votre liste WinForms peut être embarrassant. Voici une exploration approfondie du coupable :
Votre code interagit avec une base de données, récupère des données à l'aide d'un adaptateur de données MySQL et d'un adaptateur, et attribue les données à un DataTable. Le DisplayMember de la Listbox est défini sur « NameAndScore » et le DataTable sert de source de données de la Listbox.
La cause première réside dans le type de données attribuées à la Listbox. Lors de la liaison de données à une Listbox, vous spécifiez généralement une chaîne ou un objet comme DisplayMember. Chaque élément de la Listbox est ensuite créé en utilisant la valeur du DisplayMember à partir des données liées.
Dans votre code, le DisplayMember est "NameAndScore", qui est une colonne calculée dans votre requête SQL. Cette colonne combine deux valeurs, « Nom » et « Score », avec un espace entre les deux. Le DataTable contient des objets DataRow et chaque ligne représente un enregistrement de la base de données. Lorsque la Listbox se lie au DataTable, elle affiche les valeurs du DisplayMember pour chaque objet DataRow.
Étant donné que chaque DataRow représente la ligne entière de la base de données, la valeur du DisplayMember n'est pas seulement une chaîne mais un DataRowView. objet. Un DataRowView est un wrapper autour d'un objet DataRow, donnant accès à ses valeurs, relations et autres propriétés.
Pour résoudre ce problème et afficher les valeurs réelles « Nom » et « Score » :
<code class="sql">SELECT Name, Score, CONCAT(Name, ' ', Score) as NameAndScore FROM highscore ORDER BY Score DESC</code>
<code class="c#">lstNames.DisplayMember = "Name";</code>
En suivant ces étapes, vous pouvez vous assurer que votre Listbox affiche les valeurs souhaitées de votre base de données. N'oubliez pas qu'il est important de comprendre les types de données impliqués lors de la liaison à une Listbox pour éviter de telles divergences.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!