2010-01-25 11 views
0

Comment puis-je obtenir le résultat de la méthode .All() en tant que DataTable?SubSonic 3. Afficher les résultats en DataTable

Actuellement, il renvoie IQueryable, qui ne peut pas être utilisé comme source de données pour le contrôle DataGridView WinForms.

dataGridView1.DataSource = Product.All(); // ne fonctionne pas

Répondre

1

Vous pouvez lier une liste à un contrôle DataGridView. Il suffit donc d'utiliser la méthode ToList() sur IQueryable, par exemple.

MyDataGridView.DataSource = MyObject.All().ToList(); 
0

Sauf si votre classe Product implémente l'un des éléments suivants: IList, IListSource, IBindingList, IBindingListView; vous ne serez pas en mesure de lier le résultat à votre DataGridView.

0

Pour deux voies de liaison, vous pouvez utiliser un BindingList

dataGridView1.DataSource = new BindingList<Product>(Product.All().ToList()); 

Le BindingList mettra automatiquement à jour lorsque vous ajoutez/supprimer des lignes de la DataGridView et DataGridView mettra à jour vous Whan automatiquement ajouter des éléments à la liaison liste.

Si vous souhaitez mettre à jour automatiquement DataGridView lors de la modification d'un produit, le produit doit implémenter INotifyPropertyChaged