none
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

    Donnerstag, 18. Juli 2013 13:33

Antworten

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

    Donnerstag, 18. Juli 2013 13:33
  • 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.

    Donnerstag, 18. Juli 2013 15:42
  • Guten Abend Koopakiller

    Vielen Dank für Deine Antwort. Das hat funktioniert. Schade, dachte es wäre so schön, weil es doch im SQL auch ein SELECT TOP 10 gibt. Naja, so sind es halt ein paar Zeilen mehr.

    Vielen lieben Dank und gute Nacht.

    Donnerstag, 18. Juli 2013 21:50