2008-10-21 6 views
5

J'ai un DataTable qui a une colonne booléenne appelée [Invalid]. J'ai besoin de diviser ces données par cette colonne non valide - les lignes valides peuvent être éditées, les lignes non valides ne peuvent pas. Mon plan original était d'utiliser deux BindingSources et de définir la propriété Filter ([Invalid] = 'false', par exemple), qui joue dans mes mains parce que j'ai deux DataGridViews et j'ai donc besoin de deux BindingSources.Utilisation de plusieurs BindingSources sur un DataTable

Cela ne fonctionne pas: BindingSources définit la propriété Filter associée à DataTable, de sorte que les deux BindingSources contiennent les mêmes données. Est-ce que je vais devoir faire deux extractions de la base de données, ou puis-je faire ce que je veux avec les objets que j'ai?

Répondre

5

Je ne pense pas que vous pouvez le faire comme vous l'espérez.

Vous pouvez utiliser deux affichages de données différents de la même datatable, et lier vos datagridviews à ceux-ci?

5

Lorsque vous liez à un DataTable, vous liez effectivement à sa vue par défaut (DataTable.DefaultView). Et lorsque vous définissez la propriété Filter de BindingSource, vous définissez la propriété Filter de la vue par défaut, en remplaçant l'ensemble de filtres par l'autre BindingSource.

Alors deadcat's answer is correct: vous avez besoin de se lier à deux points de vue différents sur le DataTable (dont un peut être le DefaultView si vous préférez):

bindingSource1.DataSource = myDataTable; 
bindingSource2.DataSource = new DataView(myDataTable); 

ou

bindingSource1.DataSource = new DataView(myDataTable); 
bindingSource2.DataSource = new DataView(myDataTable); 
Questions connexes