2008-08-26 7 views
3

Je n'arrive pas à obtenir le nombre total de lignes pour les éléments affichés dans un Gridview utilisant la pagination et avec un LinqDataSource comme source de données.Nombre total de lignes dans le contrôle GridView à l'aide de LinqDataSource et de la pagination

J'ai essayé plusieurs approches:

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

renvoie -1 à chaque fois.

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; 
} 

me donne seulement le compte pour la page actuelle, et non le total.

D'autres suggestions?

Répondre

3

Les LinqDataSourceEventArgs sont retournés dans ces événements retour -1 à ces occasions:

-1 si l'objet LinqDataSourceStatusEventArgs a été créé lors d'une opération de modification de données; -1 si vous avez activé la pagination personnalisée en définissant AutoPage sur true et en définissant RetrieveTotalRowCount sur false.

Check here for more information - la table vers le bas, montre des propriétés différentes pour définir pour obtenir le nombre de lignes en arrière, mais il semble que vous devez soit définir les propriétés AUTOPAGE et AllowPage soit à la fois vrai ou faux à la fois. Si vous estimez que le paramètre Autopage est défini sur false dans le tableau ci-dessus et que l'option AllowPaging est définie sur true, elle renvoie le nombre de lignes de la page.

HTH

0

Eh bien, je l'ai déjà mis AutoPage et AllowPaging true. J'ai confirmé que RetrieveTotalRowCount est défini sur true en vérifiant sa valeur en mode débogage (impossible de trouver où changer sa valeur).

Et il renvoie toujours -1.

La seule chose qui manque est:

-1 si l'objet LinqDataSourceStatusEventArgs a été créé lors d'une opération de modification de données;

et je ne suis pas tout à fait sûr de ce que cela signifie. J'utilise une version modifiée de LinqDataSource pour activer certains filtres personnalisés, ce qui pourrait être le problème. D'un autre côté, en déconnant en mode debug, j'ai réussi à vérifier la valeur des arguments. TotalRowCount et c'était correct. Mais la valeur qui sort dans l'événement Selected est toujours -1.

0

J'étais coincé avec le même problème.Je résolu mon problème avec la ligne de code suivante

LinqDataSourcePoints_Selected protected void (object sender, LinqDataSourceStatusEventArgs e) { totalRecords = (e.Result sous forme de liste) .Count; }

Explication: 1 Parse la e.Result comme source de données 2 Obtenez le comte.

Fonctionne parfaitement pour moi.

0

essayez ceci, j'ai testé et il retourne toutes les lignes.

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; 
     } 

assurez-vous que votre événement est « Sélection d' »

+0

C'est une très mauvaise solution, car elle entraînera à tirer tous les enregistrements du serveur. –

Questions connexes