Как настроить подкачку данных последней строки - PullRequest
0 голосов
/ 26 июня 2019

У меня не получается установить последнюю строку для подкачки.

Я установил размер страницы: 10 в сетке

Это мой код:

protected void Page_Load(object sender, EventArgs e)
    {
        BindData();
    }

    public void BindData()
    {
        string strConnection = @"Data Source=.\sa;Initial Catalog=Northwind;Integrated Security=SSPI;";

        SqlConnection con = new SqlConnection(strConnection);
        con.Open();
        SqlCommand cmd = new SqlCommand("select ProductId, ProductName, SupplierId from Products", con);
        DataSet ds = new DataSet();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(ds);
        GridView1.DataSource = ds;
        GridView1.DataBind();
        con.Close();  

    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        BindData();  
    }

Результат:

Страница 7 состоит из 10 строк

но после того, как я перешел со страницы 7 на последнюю страницу, осталось всего менее 10 строк.

Я хочу, чтобы на последней странице было 10 строк, хотя в таблице данных 7 строк

любой может улучшить мой код.

1 Ответ

0 голосов
/ 26 июня 2019

Вам необходимо добавить пустую строку в Dataset.table (количество строк для добавления зависит от того, сколько строк меньше размера страницы)

protected void Page_Load(object sender, EventArgs e)
    {
        BindData();
    }

public void BindData()
{
    string strConnection = @"Data Source=.\sa;Initial Catalog=Northwind;Integrated Security=SSPI;";

    SqlConnection con = new SqlConnection(strConnection);
    con.Open();
    SqlCommand cmd = new SqlCommand("select ProductId, ProductName, SupplierId from Products", con);
    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(ds);
    int rowcount = ds.Tables[0].Rows.Count;
    int remainingCount = 10 - (rowcount % 10);
    for (int i = 0; i < remainingCount; i++)
    {
        DataRow row = ds.Tables[0].NewRow();
        ds.Tables[0].Rows.Add(row);
    }
    GridView1.DataSource = ds;
    GridView1.DataBind();
    con.Close();  

}

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    BindData();  
}
...