Benutzer mit den meisten Antworten
Top 10 aus einer DataView?

Frage
-
Hallo alle zusammen
Ich habe meine Daten mittels einer DataView an ein DataGrid (WPF) gebunden. Das geht soweit. Nun möchte ich nur 10 Datensätze. Dazu habe ich mir folgenden Code überlegt:
dtPatientenListe = sd.getPatientenListe() ; DataView dvSelect = new DataView(dtPatientenListe, "", "", DataViewRowState.Unchanged); string vKriteriumStr = string.Empty; int Variante = 1; if (Variante == 2) {//Variante 1 Filter vKriteriumStr = "PA_NAME LIKE 'Muster'"; dvSelect.RowFilter = vKriteriumStr; dgPatientenListe.ItemsSource = dvSelect; } else {//Variante 2 Top 10 dgPatientenListe.ItemsSource = dvSelect.RowFilter.Take(10); }
Leider bleibt mein DataGrid bei der Variante 2 in welcher ich nur 10 Zeilen wollte, leer. Die Variante 1 hingegen funktioniert, es werden die richtigen Datensätze angezeigt.
Sieht jemand was ich bei Variante 2 falsch gemacht habe und kann mir das sagen?
Vielen Dank für Hinweise
Gruss Sabrina
Antworten
-
Hallo, die RowFilter-Eigenschaft ist vom Typ string, weshalb Take(10) nur die ersten 10 Zeichen des Filters zurück gibt. Das bringt in diesem Fall nichts.
Ich denke mal, das es über eine Schleife und die ImportRow-Methode funktionieren müsste. Auf SO gibts ein entsprechendes Beispiel dazu:
http://stackoverflow.com/questions/2627695/select-top-5-from-sometable-using-dataview-rowfilter<Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite | Code Beispiele | Facebook | Twitter | Snippets C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort markiert Sabrina Sanders Donnerstag, 18. Juli 2013 21:50
Alle Antworten
-
Hallo alle zusammen
Ich habe meine Daten mittels einer DataView an ein DataGrid (WPF) gebunden. Das geht soweit. Nun möchte ich nur 10 Datensätze. Dazu habe ich mir folgenden Code überlegt:
dtPatientenListe = sd.getPatientenListe() ; DataView dvSelect = new DataView(dtPatientenListe, "", "", DataViewRowState.Unchanged); string vKriteriumStr = string.Empty; int Variante = 1; if (Variante == 2) {//Variante 1 Filter vKriteriumStr = "PA_NAME LIKE 'Muster'"; dvSelect.RowFilter = vKriteriumStr; dgPatientenListe.ItemsSource = dvSelect; } else {//Variante 2 Top 10 dgPatientenListe.ItemsSource = dvSelect.RowFilter.Take(10); }
Leider bleibt mein DataGrid bei der Variante 2 in welcher ich nur 10 Zeilen wollte, leer. Die Variante 1 hingegen funktioniert, es werden die richtigen Datensätze angezeigt.
Sieht jemand was ich bei Variante 2 falsch gemacht habe und kann mir das sagen?
Vielen Dank für Hinweise
Gruss Sabrina- Zusammengeführt Ionut DumaModerator Donnerstag, 18. Juli 2013 15:17 Dopplepost
-
Hallo, die RowFilter-Eigenschaft ist vom Typ string, weshalb Take(10) nur die ersten 10 Zeichen des Filters zurück gibt. Das bringt in diesem Fall nichts.
Ich denke mal, das es über eine Schleife und die ImportRow-Methode funktionieren müsste. Auf SO gibts ein entsprechendes Beispiel dazu:
http://stackoverflow.com/questions/2627695/select-top-5-from-sometable-using-dataview-rowfilter<Code-13/>- Koopakiller [kuːpakɪllɐ] (Tom Lambert)
Webseite | Code Beispiele | Facebook | Twitter | Snippets C# ↔ VB.NET Konverter
Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.- Als Antwort markiert Sabrina Sanders Donnerstag, 18. Juli 2013 21:50
-