GridView不会更改页面更改

时间:2012-09-13 18:27:55

标签: c# asp.net .net data-binding gridview

Gridview:页面更改时数据不会更改。

嗨,我正在使用c#在asp.net网站上工作。 我有一个带分页的gridview,gridview是从一个sql数据库填充的,在PageIndexChanging上我有:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    BindGridControl();

    gridView.PageIndex = e.NewPageIndex;
    gridView.DataBind();
}

例如,如果我点击第2页,则下一行数据显示正常。 但是,如果我点击返回页面1,数据不会改变,它会继续显示第2页的数据。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
   gridView.PageIndex = e.NewPageIndex;
   BindGridControl();  
   gridView.DataBind();
}

您的BindGridControl()是否加载数据并将其设置为gridView数据源?

答案 1 :(得分:0)

您可以改变指令的顺序

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{

    gridView.PageIndex = e.NewPageIndex;

        BindGridControl();

    gridView.DataBind();
}

答案 2 :(得分:0)

我也有这个问题很长一段时间了。 我想出了这个,它最终适合我。

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    BindGridControl(e.NewPageIndex);
}

然后在你的BindGridControl函数中:

protected void BindGridControl(int pageNumber = 0)
{ 
    SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings[connect‌​ion].ConnectionStrin‌​g);
    SqlDataReader dr;
    SqlCommand cmd;
    cmd = new SqlCommand();
    cmd.Connection = sqlConn;
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "sp_load";
    sqlConn.Open();
    dr = cmd.ExecuteReader();
    DataTable dt = new DataTable();
    dt.Load(dr);
    GridView1.PageIndex = pageNumber;
    GridView1.DataSource = dt;
    GridView1.DataBind();
    sqlConn.Close();
}

答案 3 :(得分:-1)

尝试

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{

    gridView.PageIndex = e.NewPageIndex;

    BindGridControl();

    DataBind();
}