2009-01-24 8 views
1

J'ai un gridview qui est lié à une vue de données dans le codebehind. La source de données est réellement powershell, donc je traite les données moi-même. Cela fonctionne bien et affiche le résultat comme je le veux. Cependant, lorsque j'essaie d'activer la pagination, j'obtiens cette erreur lors de l'ouverture de la page:Gridview Paging

La table doit contenir des sections de ligne dans l'ordre suivant: en-tête, corps, puis pied de page.

Une idée de pourquoi cela se passe-t-il?

Heres le code pour ma fixation:

 mbGrid.DataSource = MailBoxManager.Instance.getDataTable(); 
     mbGrid.EnableSortingAndPagingCallbacks = true; 
     mbGrid.AllowPaging = true; 

Et le code qui renseigne le datatable est:

public DataTable getDataTable() 
    { 
     DataTable dt = new DataTable(); 
     dt.Columns.Add(new DataColumn("Name", typeof(string))); 
     dt.Columns.Add(new DataColumn("Email", typeof(string))); 

     foreach (Mailbox mb in MbList) 
     { 
      DataRow dr; 
      dr = dt.NewRow(); 
      dr["Name"] = mb.Name; 
      dr["Email"] = mb.PrimaryEmail; 
      dt.Rows.Add(dr); 
     } 
     return dt; 
    } 
+0

Un exemple de code serait utile. – NotMe

+0

Vérifiez la réponse donnée ici pour voir si cela aide: http://stackoverflow.com/questions/431413/gridview-with-pager-topandbottom – DavGarcia

Répondre

4

Il y avait 2 problèmes ici pour quelqu'un qui vient à travers cette question. Tout d'abord, pour une raison quelconque, la définition des paramètres de pagination dans la page ASPX, plutôt que le code derrière la première erreur fixe, ne sais pas vraiment pourquoi. J'ai ensuite reçu une autre erreur, car la source de données que j'utilise n'est pas une source de données sql, c'est une source personnalisée, donc j'ai dû définir le code pour la méthode gridview_pageIndexChanging, une fois que j'ai fait cela, ça a bien fonctionné. Le code qui est avant tout droit:

protected void grid_PageIndexChanging1(object sender, 
             GridViewPageEventArgs e) 
    { 
     grid.PageIndex = e.NewPageIndex; 
     grid.DataBind(); 
    } 
+0

Merci. Cela a résolu mon problème. Je suppose que c'est logique, car avant d'ajouter 'grid.DataBind()' ma pagination était toujours derrière: Elle se liait à nouveau au chargement de la page suivante et non après avoir défini 'PageIndex'. – crdx