我正在做一个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中。