2011-01-12 44 views
19

Tengo una vista de cuadrícula que estoy usando para mostrar un resultado de conjunto de datos. El problema es que estoy usando paginación en él. Pero cuando hago clic en la página # dice que no he manejado el evento. ¿Debo volver a enlazar el conjunto de datos?PageIndexChanging en GridView en ASP.NET

Gracias

Respuesta

28

Pruebe el siguiente código:

protected void grdView_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    FillGrid(); 
    grdView.PageIndex = e.NewPageIndex; 
    grdView.DataBind(); 
} 
+0

Gracias .. Esto funciona. .. No sabía este pageindex incrementando antes. – JCTLK

+0

'Viewstate' se debe preferir para evitar llamadas DB excesivas en la página Cambiar eventos – Vikrant

4

Pruébalo

En el pageload

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     loadGrid(); 
    } 
} 

En el pageindexchanging

private void loadGrid() 
{ 
    using (your_bankEntities context = new your_bankEntities()) //use your connection .edmx 
    { 
     var jmDados = (from jm in context.yourdbo orderby jm.your fieldkey 
         select new 
          { 
           jm.Field1, 
           jm.Field2, 
           jm.Field3, 
           jm.Field4, 
           ........ 
           jm.n 

          }).ToList(); 
     GridView1.DataSource = jmDados; 

     GridView1.DataBind(); 
    } 
} 

En el pageindexchanging

GridView1.PageIndex = e.NewPageIndex; 

loadGrid(); 
1

En VB.net, que no tiene mucha diferencia con C#, se acaba de quitar los puntos y comas al final de cada línea

Private Sub myGridview_PageIndexChanging(sender As Object, e As GridViewPageEventArgs) Handles myGridview.PageIndexChanging 

    LoadGridView() //Call your method to load the data into the grid. 
    myGridview.PageIndex = e.NewPageIndex 
    myGridview.DataBind() 

End Sub 
Cuestiones relacionadas