在Gridview中分页.如果用户在单击新页面之前更改搜索条件,则会出现错误



我有一个页面,用户可以在其中指定几个不同的搜索条件并单击搜索按钮。这将根据结果填充gridview,并且用户能够对记录执行各种操作。gridview支持分页

除非用户在不实际点击搜索按钮的情况下更改任何搜索字段,然后点击到新页面,否则它会运行良好。

发生这种情况是因为我正在处理分页,就像这样

protected void gridview1t_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{
    gridview1.PageIndex = e.NewPageIndex;
    gridview1.DataSource = GetMyData();
    gridview1.DataBind();
}

GetMyData()获取用户输入的值并将它们传递给返回记录集的存储过程。因此,如果在选择新页面时搜索参数不相同,则过程将返回一组与最初返回的记录不同的记录。从最终用户的角度来看,这看起来很奇怪。

我可以在会话中存储我的数据表,但这似乎不是最好的解决方案。同样,我可以存储我最初搜索的参数,但这似乎也可能变得草率。有没有一种干净利落的方法来完成这个?

您可以在Session或ViewState中保存新的搜索条件,单击搜索按钮并在GetMyData方法中使用保存的条件。

我会让用于搜索条件的控件在更改时回发,然后在回发时重做数据绑定,以便搜索条件和网格中的数据之间永远不会存在差异。

出于我自己的好奇心,您可以取出对getmydata()的调用,只需设置页面索引,并重新绑定gridview。我相信这将解决有新的搜索数据的问题。

protected void gridview1t_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{
    gridview1.PageIndex = e.NewPageIndex;
    gridview1.DataBind();
}

最新更新