2017-01-31 6 views
6

Was gibt mir so etwas wie dies mit:Binding - was sind die Vorteile der Verwendung von Binding

DataGridView dgvDocuments = new DataGridView(); 
BindingSource bindingSource = new BindingSource(); 
DataTable dtDocuments; 

dtDocuments = MsSQL.GetDocuments(dtpOd.Value, dtpDo.Value); 
bindingSource.DataSource = dtDocuments; 
dgvDocuments.DataSource = bindingSource; 

statt dessen:

DataGridView dgvDocuments = new DataGridView(); 
DataTable dtDocuments; 

dtDocuments = MsSQL.GetDocuments(dtpOd.Value, dtpDo.Value); 
dgvDocuments.DataSource = dtDocuments; 
+0

fand ich noch einen signifikanten Unterschied. Sie können meine Bearbeitung überprüfen. Sie können auch in Betracht ziehen, eine der Antworten zu akzeptieren, die für Sie hilfreich waren. –

Antwort

1

BindingSource haben viele Vorteile, unter einigen von ihnen

1) Wenn Sie Daten an ein Steuerelement mit Bindingsource binden, wird es auf beiden Seiten wirksam. Alle Änderungen, die an Datenquelleneffekten vorgenommen werden, um die Datenquelle zu steuern und Änderungen an der Steuerung vorzunehmen. Sie müssen nicht nehmen Wert von Kontrolle benötigen und

2) wieder auf Datasource zuweisen Sie filter-datasource mit bindingsource

3 anwenden können) Sie können many controls mit einem datasource binded arbeiten. Zum Beispiel haben Sie Tabelle Fruits, und Sie binden diese table zu 2 DataGridView, um Aplles und Peaches separat zu zeigen. Mit bindingsourceFilter Eigenschaft können Sie Apples und Peaches separat anzeigen.

4) Sie können Searching tun, Sortieren, Bearbeiten, Filtern mit Binding

Sie können nicht Binding Nutzen auf Grundlisten sehen, aber es gibt mehr als Grundliste Sie werden sehen, wie Binding nützlich ist.

können Sie mehr informtaion erhalten Here

3

Einer der Vorteile ist, dass, wenn Sie manipulieren Werte in der DataGridView manuell, dann werden die Änderungen in den zugrunde liegenden Daten widergespiegelt. (EDIT: Es scheint dies funktioniert auch mit normalen Datasource binden.)

ein weiterer Vorteil ist, dass Sie die Möglichkeit zu erhalten, einen Beitrag für die zugrunde liegenden Daten hinzuzufügen (zumindest, wenn es sich um eine List ist), indem Sie auf den zusätzlichen leeren Feld klicken und editiere die Werte. Dadurch wird ein neues Element ohne zusätzlichen Code zum Schreiben hinzugefügt.

enter image description here

Diese Detailed Data Binding Tutorial helfen kann mehr Licht auf die Fähigkeiten von Daten zu vergießen im allgemeinen

EDIT Bindung:

Ein weiterer Unterschied besteht darin, dass eine Manipulation der zugrunde liegenden Daten, wie das Hinzufügen Ein Element zu einer Liste wird nicht in der DataGridView widergespiegelt, auch wenn die DataSource Eigenschaft erneut zugewiesen wird, die beispielsweise in einer ComboBox funktionieren würde. Aber eine Neuzuweisung einer neuen Instanz eines BindingSource wird den Trick tun.

Also, wenn Sie eine Liste der Personen:

List<pers> list = new List<pers>(); 
BindingSource bs = new BindingSource(); 
bs.DataSource = perlist; 
dataGridView1.DataSource = bs; 

und wollen später auf ein neues Element in die Liste im Code hinzuzufügen, erstellen Sie einfach eine neue Instanz von BindingSource neu zuzuweisen, um es in die DataGridView.DataSource

list.Add(new pers()); 

bs = new BindingSource(); 
bs.DataSource = perlist; 

dataGridView1.DataSource = bs; 

und das neue Element wird Anzeige

+0

Ich bin nicht sicher, ob ich etwas vermisse, aber für mich sind Änderungen auf beide Arten auch ohne 'BindingSource' reflektiert – Slai

+0

@Slai du hast Recht. Ich frage mich, welchen Fehler ich letztes Mal gemacht habe, als ich es versuchte und es nicht geklappt hat. Also speicherte ich dies in meinem Gehirn als Vorteil, weil ich 'BindingSource' statt normaler Bindung verwendete und mein Problem löste. –

+1

eine Menge von Tutorials und Codebeispiele verwenden es, so dass es für die meisten scheint wie es benötigt wird. Visual Studio erstellt BindingSource, wenn Daten über den Designer gebunden werden. Daher kann es vorkommen, dass ich etwas davon verwende (möglicherweise durch Trennen der Filter- und Sortierlogik von der Datenquelle). 'BindingSource' wird benötigt, wenn Daten für einige Sammlungen wie' Dictionary' verwendet werden, aber ich sehe sonst viel davon. – Slai

Verwandte Themen