2011-01-12 16 views
19

Ich habe eine Gridview, die ich verwenden, um ein Dataset-Ergebnis anzuzeigen. Das Problem ist, dass ich Paging darin verwende. Aber wenn ich auf die Seite klicke, heißt es, dass ich das Ereignis nicht behandelt habe. Muss ich den Datensatz erneut binden ??? VersuchenPageIndexChanging in GridView in ASP.NET

Dank

Antwort

28

den folgenden Code:

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

Dank .. Dies funktioniert. .. Ich wusste nicht, dass dieser Seitenindex vorher inkrementiert wurde. – JCTLK

+0

'Viewstate' sollte bevorzugt werden, um übermäßige DB-Aufrufe auf Seite Ereignisse zu vermeiden – Vikrant

4

Probieren Sie es

Im Pageload

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

Im 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(); 
    } 
} 

Im Pageindexchanging

GridView1.PageIndex = e.NewPageIndex; 

loadGrid(); 
1

In VB.net, es hat nicht viel Unterschied mit C#, Sie entfernen Sie einfach die Semikolons am Ende jeder Zeile

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