2014-09-19 3 views
1

У меня есть DataGridView на странице. Когда я вызываю эту страницу, весь список приходит. Я решил добавить разбивку на страницы в GridView.asp.net gridview pagination не отображается до обновления

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id" OnRowDeleting="GridView1_Del" OnSelectedIndexChanging="GridView1_Sel" OnPageIndexChanging="GridView1_PageIndexChanging"> 
      <Columns> 
       <asp:BoundField DataField="id" HeaderText="Id" SortExpression="id" Visible="false" /> 
       <asp:BoundField DataField="name" HeaderText="Name" SortExpression="name" /> 
       <asp:BoundField DataField="author" HeaderText="Author" SortExpression="author" /> 
       <asp:BoundField DataField="active" HeaderText="Active" SortExpression="active" /> 
       <asp:CommandField HeaderText="Delete" SelectText="Delete" ShowDeleteButton="True" ButtonType="Button" /> 
      </Columns> 
     </asp:GridView> 



//Page_Load() 
gridFill(); 
GridView1.AllowPaging = true; 
GridView1.PageSize = 10; 

gridFill() метод заполняет GridView.

public void gridFill() 
{ 
    conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/inetpub/example.com/db/db.mdb"); 
    sql = "SELECT id, name, author, active, FROM [table]"; 
    dt = new DataTable(); 

    try 
    { 
     if (conn.State != ConnectionState.Open) conn.Open(); 
     comm= new OleDbCommand(sql, conn); 
     da= new OleDbDataAdapter(comm); 

     da.Fill(dt); 

     if (dt.Rows.Count > 0) 
     { 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
    } 

    catch (System.Data.OleDb.OleDbException ex) 
    { 
     string msg = "Error: "; 
     msg += ex.Message; 
     throw new Exception(msg); 
    } 

    finally 
    { 
     conn.Close(); 
    } 
} 

Когда я вызываю страницу, он по-прежнему получает все строки сразу. Также, если я нажимаю 11 или более поздней (потому что я ограничиваю пейджинг до 10 строк) строк для удаления, я получаю индексную ошибку.

Итак, я добавил еще один Button, обозначенный как «Обновить», который вызывает метод gridFill() еще раз. Затем разбивается на страницы.

В чем может быть причина, по которой GridView не подкачки в первый раз?

ответ

1

Если изменить порядок строк

//Page_Load() 
gridFill(); 
GridView1.AllowPaging = true; 
GridView1.PageSize = 10; 

в

//Page_Load() 
GridView1.AllowPaging = true; 
GridView1.PageSize = 10; 
gridFill(); 

это работает. Я не могу поверить в это

+0

Ну, это работает, потому что в вашем 'gridFill()' метод 'DataBind()' использует свойства GridView, такие как 'AllowPaging' и' PageSize'. Если вы установите их после привязки, 'DataBind()' использует значения по умолчанию. – Alexander

Смежные вопросы