2009-03-20 7 views
3

J'ai une grille de données avec pagination activée. J'affiche les résultats dans DataGrid en fonction d'une condition de filtrage. J'ai filtré les données et il y a maintenant 2 pages. quand je vais à la 2 ème page. et je fais encore une fois la fonction de crustacé pour affiner les résultats. Ensuite, je reçois une erreur comme "Invalid CurrentPageIndex value.Il doit être> = 0 et < le pagination PageCount + dataagrid" Je suis sûr que la deuxième recherche produira seulement moins de pages que le précédent. Comment résoudre le problème? Merci d'avanceDatagrid Paging: valeur CurrentPageIndex non valide. Il doit être> = 0

Répondre

5

Lorsque vous effectuez certaines modifications, vous devez réinitialiser à la page 1. Cela inclut les modifications de filtrage. Pratiquement, chaque fois que vous changez le nombre de lignes qui pourraient être disponibles pour votre grille, revenez à la page 1.

0

Une autre suggestion consiste à réinitialiser le CurrentPageIndex uniquement lorsque le PageCount a changé et provoque l'exception HttpException. Le fragment de code est basé sur example de Les Smith.

Try 
     dataGrid1.DataBind() 
    Catch 
     ' We possibly don't have the correct PageCount. 
     dataGrid1.CurrentPageIndex = 0 
     dataGrid1.DataBind() 
    End Try 
1

J'ai une grille de données avec la pagination activée. J'affiche les résultats dans DataGrid en fonction d'une condition de filtrage. J'ai filtré les données et il y a maintenant 2 pages. Quand je vais à la deuxième page et que je fais la fonction de recherche encore une fois pour affiner les résultats. Ensuite, je reçois une erreur comme

« non valide valeur CurrentPageIndex. Il doit être> = 0 et < le NbPages + pagination DataGrid »

Je suis sûr que la deuxième recherche ne produira moins nombre de pages que le précédent. Comment résoudre ce problème ? Affichage d'erreur:

Valeur CurrentPageIndex. Il doit être> = 0 et < le PageCount.

Je résolu le problème

protected void btnSearchLibrary_Click(object sender, EventArgs e) 
{ 
    if(!String.IsNullOrEmpty(txtSearchLibraryNo.Text.Trim())) 
    oBookReceiptDTO.LibraryCardNo = txtSearchLibraryNo.Text.Trim(); 
    gvBooksReceiptList.CurrentPageIndex = 0; 
    FillGridViewBookReceiptList(oBookReceiptDTO); 
} 

NOTE: gvBooksReceiptList.CurrentPageIndex = 0; c'est la ligne que je l'habitude de résoudre le problème.

0

Vous pouvez soit aller à la première page ou attraper l'exception et passer à la page que vous voulez. Si vous supprimez un enregistrement de la dernière page, vous voudrez peut-être passer au précédent.

try 
    { 
     grid.DataSource = dao.PopulateGrid(); 
     grid.DataBind(); 
    } 
    catch 
    { 
    if (grid.CurrentPageIndex >= grid.PageCount) 
     { 
     grid.CurrentPageIndex -= 1; 
     grid.DataSource = dao.PopulateGrid(); 
     grid.DataBind(); 
     } 
    } 
0

Pour mon cas, ce que je faisais est d'appliquer toujours la ligne réinitialisation de l'index de la page actuelle chaque fois qu'il ya un changement de données qui est en cours de chargement sur le contrôle de grille de données.

DataGrid.CurrentPageIndex = 0

DataGrid.DataSource = Datatable/Dataset

DataGrid.DataBind()

C'est parce qu'il est pas tout le temps que l'exception jetée lors de la liaison d'une source de données à la grille de données serait le nombre de pages incohérent.