2010-11-04 11 views
0

Je suis assez nouveau sur C# (et Visual Studio) et j'ai rencontré un problème.Remplissage d'un DataGridView à l'aide d'un DataTable et TableAdapter basé sur une instruction SELECT

J'ai une base de données Access que j'utilise, et j'ai besoin de remplir un DataGridView en utilisant une instruction SELECT. Voici ce que j'ai fait jusqu'à présent:

  1. Ouvert mon fichier DataSet.xsd.
  2. Créé un nouveau DataTable (appelé MyNewTable) et TableAdapter basé sur l'instruction SELECT que je veux exécuter.
  3. Je suis allé à mon fichier Form.cs, ajouté un DataGridView et défini son DataSource à Other Data Sources > Project Data Sources > DataSet > MyNewTable.
  4. Créer et exécuter le programme.

Lorsque je l'exécute, cependant, il ne montre aucune ligne. Donc, pour vérifier et faire que mon instruction SELECT renvoie des lignes, je retourne à mon fichier DataSet.xsd et je clique avec le bouton droit sur MyNewTable et sélectionne Preview Data. Effectivement, quand j'appuie sur le bouton Aperçu des données, il y a deux lignes dans la table. Pour vérifier et m'assurer que je ne faisais pas quelque chose de mal dans la liaison, j'ai essayé de revenir en arrière et de définir DataSource sur une autre table (une vraie table de la base de données, pas une basée sur une instruction SELECT). Quand je l'ai réexécuté avec la vraie table, il a montré des données.

Alors qu'est-ce que je fais mal? Quelle est la procédure appropriée pour créer un DataGridView qui affiche les résultats d'une instruction SELECT?

Répondre

2

simples ..

voir d'abord aller à la XAML de votre formulaire .. trouver le datagridview que vous avez fait glisser .. là vous devez trouver AutoGenerateColumns propriété, rétablissez alors vrai

après revenir à votre code C# et de le faire comme ça ...

yourdataset x = new yourdataset(); 
yourtableadapter y = new yourtableadapter(); 
y.Fill(x.yourtable); 
datagridview1.itemsource = x.yourtable.defaultview ; 

S'il vous plaît garder à l'esprit .. c'est Votre jeu de données et vos noms de tables peuvent être différents .. donc utilisez les noms appropriés .. Des problèmes me le font savoir ..

-1

Oui, le code ci-dessus est le travail correctement, mais seulement pour Fill et Get États. Ne pas fournir de lignes pour les autres sélectionrequêtes. vous devrez peut-être mettre en œuvre une procédure stockée, puis vous pouvez faire ce que vous voulez