2008-08-26 8 views
3

Ich habe ein Problem beim Abrufen der Gesamtzeilenanzahl für Elemente, die in einer Gridview mithilfe von Paging und mit einer LinqDataSource als Datenquelle angezeigt werden.Gesamtzahl der Zeilen im GridView-Steuerelement mit LinqDataSource und Paging

Ich habe versucht, mehrere Ansätze:

protected void GridDataSource_Selected(object sender, LinqDataSourceStatusEventArgs e) 
{ 
    totalLabel.Text = e.TotalRowCount.ToString(); 
} 

-1 zurück, jedes Mal.

protected void LinqDataSource1_Selected(object sender, LinqDataSourceStatusEventArgs e) 
{ 
    System.Collections.Generic.List<country> lst = e.Result as System.Collections.Generic.List<country>; 
    int count = lst.Count; 
} 

gibt mir nur die Anzahl für die aktuelle Seite, und nicht die Summe.

Haben Sie noch weitere Vorschläge?

Antwort

3

Die LinqDataSourceEventArgs zurück in diesen Ereignissen -1 zurück zu diesen Gelegenheiten:

-1, wenn das LinqDataSourceStatusEventArgs Objekt während einer Datenmodifikationsoperation erstellt wurde; -1, wenn Sie das benutzerdefinierte Paging aktiviert haben, indem Sie AutoPage auf true setzen und RetrieveTotalRowCount auf false festlegen.

Check here for more information - die Tabelle nach unten hin, zeigt verschiedene Eigenschaften, um den rowcount zurück zu bekommen, aber es sieht aus wie Sie entweder Autopage und AllowPage Eigenschaften entweder beide wahr oder beide falsch gesetzt haben.

Nach der Tabelle im obigen Link und dem von Ihnen angegebenen Beispiel haben Sie Autopage auf false gesetzt, aber AllowPaging auf true gesetzt, daher gibt es die Anzahl der Zeilen auf der Seite zurück.

HTH

0

Nun, ich habe schon Autopage und AllowPaging auf true gesetzt. Ich habe bestätigt, dass RetrieveTotalRowCount auf "true" gesetzt ist, indem ich den Wert im Debug-Modus überprüft habe (ich konnte nicht herausfinden, wo der Wert geändert werden soll).

Und es gibt immer noch -1 zurück.

Das einzige, was fehlt, ist:

-1, wenn das LinqDataSourceStatusEventArgs Objekt während einer Datenmodifikationsoperation erstellt wurde;

und ich bin mir nicht sicher, was das bedeutet. Ich benutze eine modifizierte Version der LinqDataSource, um einige benutzerdefinierte Filter zu aktivieren, so dass das Problem sein könnte. Auf der anderen Seite habe ich, während ich im Debug-Modus rumgehandelt habe, es geschafft, den Wert der arguments.TotalRowCount zu überprüfen und es war korrekt. Der Wert, der im Selected-Ereignis ausgegeben wird, ist jedoch immer -1.

0

Ich war mit dem gleichen Problem fest.Ich löste mein Problem mit der folgenden Codezeile

protected void LinqDataSourcePoints_Selected (object sender, LinqDataSourceStatusEventArgs e) { totalrecords = (e.Result als List) .Count; }

Erläuterung: 1-Parse die e.Result als Datenquelle 2-Holen Sie sich das Count.

Arbeiten perfekt für mich.

0

versuchen Sie dies, ich habe getestet und es gibt alle Zeilen zurück.

protected void LinqDataSource1_Selecting(object sender, LinqDataSourceStatusEventArgs e) 
     { 
      System.Collections.Generic.List<country> lst = e.Result as System.Collections.Generic.List<country>; 

      int count = lst.Count; 
     } 

stellen Sie sicher, Ihre Veranstaltung „Auswahl

+0

ist Dies ist eine sehr schlechte Lösung, weil es beim Ziehen alle Datensätze aus dem Server führen. –