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页的数据。
我该如何解决这个问题?
答案 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[connection].ConnectionString);
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(); }