Mit Hilfe von DataView können wir verschiedene Ansichten für die in der DataTable gespeicherten Daten erstellen. Über DataView können Sie beispielsweise unterschiedliche Sortierreihenfolgen verwenden, um die Daten in der DataTable anzuzeigen, oder die Daten in der DataTable basierend auf dem Datenspaltenstatus oder Filterausdrücken filtern. Das Wichtigste ist, dass wir DataView zum Vervollständigen verwenden müssen, wenn wir verschiedene Ansichten für die Daten in der DataTable erstellen und diese Daten an Steuerelemente im Formular binden müssen.
DataView bietet eine dynamische Datenansicht, d. h. Inhalt, Sortierreihenfolge und Mitglieder spiegeln alle Änderungen in der Quell-DataTable wider. Offensichtlich unterscheidet sich die DataView-Methode stark von der DataTable.Select-Methode. Die Select-Methode gibt ein Array von DataRow-Objekten aus der Datentabelle basierend auf einem bestimmten Filterausdruck oder einer bestimmten Sortierreihenfolge zurück, und ihre Mitglieder und Sortierreihenfolge sind statisch. Aufgrund der dynamischen reaktiven Natur von DataView eignet es sich sehr gut für den Einsatz in Datenbindungsanwendungen.
DataView bietet Ihnen eine dynamische Ansicht einer einzelnen Datensammlung. Sie können verschiedene Sortierreihenfolgen und Filterbedingungen auf die Datensammlung anwenden. Dies ähnelt in gewisser Weise der von der SQL Server-Datenbank bereitgestellten Ansicht. Es besteht jedoch immer noch ein großer Unterschied zwischen DataView und Datenbankansicht, da DataView weder als Datentabelle verwendet werden kann noch eine Ansicht zum Verbinden der Datentabelle bereitstellen kann. Darüber hinaus können Sie nicht nur Felder in der Quelldatentabelle nicht ausschließen, sondern auch keine zusätzlichen Felder hinzufügen, die in der Quelldatentabelle nicht vorhanden sind (z. B. Ausdrucksfelder).
Sie können eine DataView auf zwei Arten erstellen. Die erste Möglichkeit besteht darin, den DataView-Konstruktor zu verwenden, und die zweite Möglichkeit besteht darin, einen Verweis auf die DefaultView-Eigenschaft der DataTable zu erstellen. In diesem Artikel wird detailliert erläutert, wie diese beiden Methoden zum Erstellen von DataView verwendet werden.
Verwendung des DataView-Konstruktors
Der DataView-Konstruktor stellt drei Multiload-Versionen bereit, wie in der folgenden Tabelle gezeigt.
Multiload-Version des DataView-Konstruktors
DataView()
DataView(ByVal-Tabelle als DataTable)
DataView(ByVal table As DataTable, _
ByVal RowFilter als String, _
ByVal Sortieren als String, _
ByVal RowState As DataViewRowState)
Die erste Version des DataView-Konstruktors initialisiert eine neue Instanz der DataView-Klasse ohne Parameter. Bitte beachten Sie, dass Sie, wenn Sie diese Version zum Erstellen eines DataView verwenden, nach dem Erstellen des DataView-Objekts zunächst die Table-Eigenschaft festlegen müssen, um dessen Quell-DataTable zu bestimmen. Anschließend können Sie mit dem Festlegen anderer Eigenschaften (RowFilter, Sort usw.) fortfahren. .
Der folgende Programmcode demonstriert, wie man mit der ersten Version des DataView-Konstruktors ein DataView-Objekt erstellt, um die Datenspalten der Datentabelle „Zhang Limin Studio“ im Datensatz zu filtern und zu sortieren und das DataGridView-Steuerelement daran zu binden Datenansicht. Wir haben festgestellt, dass das DataGrid-Steuerelement nur Frauen anzeigt und die Daten in der Reihenfolge der Striche der Namen von den meisten nach den wenigsten angeordnet werden. Das Folgende ist der Programmcode für dieses Beispiel:
SqlDataAdapter1.Fill(Ds Zhang Limin Studio, „Zhang Limin Studio“)
'DataView-Objekt erstellen
Dim dv As DataView = New DataView
' Da der DataView-Konstruktor ohne Parameter zum Erstellen des DataView-Objekts verwendet wird,
' Daher muss zuerst die Table-Eigenschaft festgelegt werden, um ihre Quell-DataTable zu bestimmen
dv.Table = Ds Zhang Limin Studio.
Legen Sie die Sortierreihenfolge so fest, dass die Reihenfolge der Striche des Namens vom höchsten zum niedrigsten Wert erfolgt.
dv.Sort = "NameDESC"
' Filterbedingungen festlegen, um nur Frauen anzuzeigen
dv.RowFilter = "Gender = 'Female'"
' Binden Sie das DataGridView-Steuerelement an die DataView
DataGridView1.DataSource = dv
Die zweite Version des DataView-Konstruktors stellt die Verwendung der angegebenen DataTable dar, um eine neue Instanz der DataView-Klasse zu initialisieren.
Der folgende Programmcode demonstriert, wie man mit der zweiten Version des DataView-Konstruktors ein DataView-Objekt erstellt, um die Datenspalten der Datentabelle „Zhang Limin Studio“ im Datensatz zu filtern und zu sortieren und das DataGridView-Steuerelement daran zu binden Datenansicht. Wir haben festgestellt, dass das DataGridView-Steuerelement nur die Mitarbeiterdaten der „Informationsabteilung“ anzeigt und die Daten entsprechend dem aktuellen Gehalt von hoch nach niedrig geordnet werden:
SqlDataAdapter1.Fill(Ds Zhang Limin Studio, "Zhang Limin Studio")
' Erstellen Sie ein DataView-Objekt
Dim dv As DataView = New DataView(Ds Zhang Limin Studio. Zhang Limin Studio)
'Legen Sie die Sortierreihenfolge fest, um basierend auf dem aktuellen Gehalt von hoch nach niedrig zu sortieren
dv.Sort = "Current Salary DESC"
'Filterbedingungen festlegen, um nur Mitarbeiterdaten der „Informationsabteilung“ anzuzeigen
dv.RowFilter = "Department = 'Information Department'"
' Binden Sie das DataGridView-Steuerelement an die DataView
Me.DataGridView1.DataSource = dv
Die dritte Version des DataView-Konstruktors stellt die Initialisierung einer neuen Instanz der DataView-Klasse unter Verwendung der angegebenen DataTable, RowFilter, Sort und DataViewRowState dar.
Der folgende Programmcode demonstriert, wie man mit der dritten Version des DataView-Konstruktors ein DataView-Objekt erstellt, um die Datenspalten der Datentabelle „Zhang Limin Studio“ im Datensatz zu filtern und zu sortieren und das DataGridView-Steuerelement daran zu binden Datenansicht. Wir haben festgestellt, dass das DataGridView-Steuerelement nur Mitarbeiterdaten anzeigt, deren aktuelles Gehalt mehr als 49.000 Yuan beträgt, und die Daten entsprechend dem aktuellen Gehalt von hoch nach niedrig geordnet werden:
SqlDataAdapter1.Fill(Ds Zhang Limin Studio, "Zhang Limin Studio")
' Erstellen Sie ein DataView-Objekt
Dim dv As DataView = New DataView( _
Ds Zhang Limin Studio. Zhang Limin Studio, _
„Aktuelles Gehalt > 49000“, _
„Aktuelles Gehalt DESC“, _
(DataViewRowState.CurrentRows)
' Binden Sie das DataGridView-Steuerelement an DataView.
Me.DataGridView1.DataSource = dv
Ich möchte alle daran erinnern, dass der Index der DataView wiederhergestellt wird, wenn die DataView erstellt wird und wenn eine der Sort-, RowFilter- oder RowStateFilter-Eigenschaften geändert wird. Das heißt, wenn Sie die beste Leistung genießen möchten, sollten Sie beim Erstellen des DataView die Sortierreihenfolge oder Filterkriterien direkt im Konstruktor angeben. Wenn Sie beim Erstellen einer DataView die Sortierreihenfolge oder Filterbedingungen nicht direkt im Konstruktor angeben, sondern nach der Erstellung die Eigenschaften Sort, RowFilter oder RowStateFilter des DataView-Objekts festlegen, wird der Index der DataView-Ursachen wiederhergestellt Der Index muss mindestens zweimal erstellt werden.
Verwenden der DefaultView-Eigenschaft von DataTable
Die DefaultView-Eigenschaft der DataTable gibt ein DataView-Objekt zurück, das die DataTable als Quelldatentabelle verwendet, sodass Sie die Datenspalten in der DataTable sortieren, filtern und durchsuchen können. Wenn die von Ihnen erstellte DataView alle Datenspalten in der DataTable anzeigen und in natürlicher Reihenfolge anordnen möchte, ist die Verwendung der DefaultView-Eigenschaft der DataTable eine sehr direkte und bequeme Möglichkeit, die DataView zu erstellen.
Für das Programm, dessen Ausführungsbildschirm in Abbildung 1 dargestellt ist, verwendet es die DefaultView-Eigenschaft der DataTable, um eine DataView zu erstellen, sodass alle Datenspalten der Quelldatentabelle zu Beginn im DataGrid-Steuerelement angezeigt werden können und dem Benutzer ermöglicht werden um die DataView während der Ausführungsphase zu übergeben, um Daten dynamisch zu filtern. Der Programmcode ist unten aufgeführt:
' Deklaration des DataView-Objekts auf Kategorieebene
Private dv As DataView
Private Sub DemoForm5_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Behandelt MyBase.Load
FillComboBoxDepartment()
SqlDataAdapter1.Fill(Ds Zhang Limin Studio, "Zhang Limin Studio")
' DataView erstellen
dv = Ds Zhang Limin Studio. DefaultView
' Zeigt die Anzahl der Datenspalten in der Datenansicht an
txtRowCount.Text = dv.Count.ToString
' Binden Sie das DataGridView-Steuerelement an die DataView
Me.DataGridView1.DataSource = dv
End Sub
Private Sub FillComboBoxDepartment()
'Erstellen Sie ein Datenbefehlsobjekt (z. B. ein SqlCommand-Objekt)
Dimmen Sie foxCMD als neuen SqlCommand
foxCMD.Connection = SqlConnection1
foxCMD.CommandText = "SELECT DISTINCT Department FROM dbo.Zhang Limin Studio"
'Öffnen Sie die Verbindung
SqlConnection1.Open()
mit myReader als SqlDataReader = foxCMD.ExecuteReader()
Wenn myReader.HasRows Dann
Während myReader.Read()
ComboBoxDepartment.Items.Add(myReader.GetSqlString(0))
Ende während
Ende wenn
Beenden Sie die Verwendung
ComboBoxDepartment.SelectedIndex = 0
End Sub
Private Sub btnFilter_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Behandelt btnFilter.Click
dv.RowFilter = "Department= '" & _
ComboBoxDepartment.SelectedItem.ToString() & "'"
'Zeigt die Anzahl der Datenspalten im DataView an
txtRowCount.Text = dv.Count.ToString
End Sub
http://www.cnblogs.com/liminzhang/archive/2006/10/23/537518.html