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