Die Beta 2 von Visual Studio .net wird in Massen an die Entwickler versand. So wird es Zeit hier auf www.devtrain.de verstärkt technische Artikel zum Thema zu bringen.
ADO.NET lebt von disconnected Daten. Die Daten werden von der Datenquelle geholt und im Dataset zwischengespeichert. Um nun nicht für jede Kleinigkeit die Datenbank bemühen zu müssen, können diese Offline Daten bearbeitet, sortiert und eben gefiltert werden.
In dieses Dataset können auch Ergebnisse von mehreren SQL Select Statements geschoben werden. Diese wiederum können auch wieder ohne Connection in Beziehung (=Relation) gebracht werden.
Über das DataView werden diese Daten in eine Form gebracht, die an ein Control bindbar ist. So können zb die Zeilen einer Tabelle an ein Grid gebunden werden.
[CS] MyDataGrid.DataSource=ds.Tables["Products"].DefaultView; [VB] MyDataGrid.DataSource=ds.Tables("Products").DefaultView |
Dieser Defaultview stellt immer einen Dataview dar. Man könnte also auch vorher über ein Objekt arbeiten.
Dim dv as new Dataview() dv=ds.Tables("Products").DefaultView |
Mit diesem Dataview kann nun weiter gearbeitet werden. So wollen wir zunächst die Daten filtern über das Schlüsselwort Rowfilter. Die Anwendung ist ähnlich wie in der SQL Syntax.
dv.RowFilter = "CustomerID='ALFKI'" |
Den Filter können Sie zurücksetzen indem Sie einen Leerstring zuweisen.
Die Filterbedingung kann auch über die Schlüsselwörter AND oder OR zusammengestzt werden. Als Asterix steht der * zur Verfügung. Genauso steht das LIKE aus SQL zur Verfügung. Ein Spezialfall ist, wenn der Filterstring auf einen Asterix Filtern soll, dann muss dieser in eckige [] Klammern gesetzt werden. Ein weiterer Sonderfall ist ein Asterix innerhalb des Filterstrings (AL*KI). Dies ist nicht möglich.
Das Filtern ist vom Vorgehen her, dem aus Access am ähnlichsten.
Die nächste nützliche Funktion ist sicher das umsortieren der Daten. Eine sinnvolle Anwendung ist das Sortieren in einem Grid nach Spalten. Das Datagrid bringt einiges dafür schon mit. Dies sei aber an anderer Stelle behandelt. Hier geht es um das reine sortieren. Dazu lässt sich direkt auf dem DefaultView das Sort Kriterium setzen. Dies ist in erster Linie ein Tabellenfeld.
ds.Tables("Products").DefaultView.Sort="FeldName" |
Trotz intensiver suche, habe ich bisher keine Eigenschaft für Ab- bzw. Aufsteigendes bzw. kombiniertes sortieren gefunden.
Dieser Code bezeiht sich auf die BETA 2 des Frameworks.