我正在做一个Web Forms项目。这是一个旧的,这次添加了很多抽象。在我的其中一页上,我有一个带有分页的gridview。我正在尝试通过检查当用户转到下一个时当前gridview页面上是否已更改某些内容来扩展当前实现。我想我通过使用两个会话变量来做到这一点。我的问题是在RowDataBound事件中填充了其中之一,并且由于在原始ASP.NET会话上方存在一些抽象,因此RowDataBound事件中的代码如下所示:

 SessionWrapper.GetInstance().RemoveSessionItem("OriginalData");
 SessionWrapper.GetInstance().SetSessionItem("OriginalData", someData);


这在RowDataBound实现的最后被调用,例如,在我的情况下,gridview每页显示10条记录,因此我删除了10次键,然后我将其与更新的数据相加,其中someData是每个记录的集合将附加在RowDataBound的每个调用上。

我想做的是找到一种方法,它是RowDataBound的最后一次执行,并且只执行一次以上步骤。因为我知道每页有10页,所以我可以设置一个计数器并进行检查,但是如果最后一页上的记录少于10条,或者记录总数少于10条呢?

那么,有没有办法可靠地检查RowDataBound的最后一次调用时间?

最佳答案

我建议使用DataBound进行Session的更新。像这样:

protected void GridView_DataBound(object sender, EventArgs e)
{
    SessionWrapper.GetInstance().RemoveSessionItem("OriginalData");
    SessionWrapper.GetInstance().SetSessionItem("OriginalData", someData);
}


假定someData在此方法的范围内是可访问的。如果不是,则需要将其存储在类级别变量或Session中。

09-04 06:55