0

我在我的应用程序中广泛使用GridViewRepeater(以及其他类似DropDownList)控件以及为ObjectDataSource提供数据的ObjectDataSource组件和类(ObjectDataSource上的TypeName / SelectMethod属性)。我最近注意到SelectMethod仅在

IsPostBack == false

另外,当我手动绑定时,我总是在!IsPostBack时绑定。直到现在,我从不好奇控件如何在回发之间维护它们的数据(我必须创建带有排序/分页等的 GridView,并且我想有效地做到这一点)。

您能否解释/提供一些带有描述如何完成的链接?

我也没有得到一件事:在使用GridView并迭代行时,有时我需要访问其GridViewRow.DataItem属性以获取支持对象(通常是获取某种 ID)。有时它是空的 - 有时不是。我不知道为什么。但是,它为空,我仍然可以访问(例如)GridViewRow.DataKeys

谢谢

编辑:知道什么时候答案说这要归功于ViewState,我还有一个问题:如果我数据绑定 100 个非常重的业务对象,并且在数据绑定时我只使用几个属性(假设我还使用 OnRowDataBound 事件来呈现一些额外的数据),这是否意味着整个对象都被序列化了?

4

2 回答 2

1

ASP.Net 在所有 HTML 页面中使用 ViewState 一个隐藏变量来维护页面的状态。

阅读本文以获得更多理解

http://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&sqi=2&ved=0CFMQFjAB&url=http%3A%2F%2Fmsdn.microsoft.com%2Fen-us% 2Flibrary%2Fms972976.aspx&ei=UpE0UK3uBsOqrAe94ICwBg&usg=AFQjCNG5ErbrFH0ZYV_WW-jonIl25xEsDQ

于 2012-08-22T07:59:39.840 回答
0

他们将其存储在名为ViewState(或更准确地说是“__VIEWSTATE”)的页面上的隐藏字段中。如果您在 ASPX 页面上查看源代码,您会看到它。

您也可以通过访问 Page 的 ViewState 属性在 ViewState 中存储和检索页面的状态信息。

我将从这里开始http://msdn.microsoft.com/en-us/library/ms972976.aspx

所以,是的,如果你存储了大量的大对象,在页面周期中就会有大量的数据来回传输到客户端。小心使用,Viewstate 会很有用,但如果使用不慎,则会产生负面影响。

于 2012-08-22T07:58:23.867 回答