DevExpress控件使用交流,DevExpress中国社区Dev联系电话 联系电话:023-68661681

DevExpress ASPxGridView行缓存的主要特征以及方法

来源:本站原创   发布时间:2012-08-24   浏览:2575次

ASPxGridView拥有内置缓存。若启用EnableRowCache设置,缓存可存储可见行数据(行属于ASPxGridView的当前数据页),这就可以避免附加数据的绑定。

为缓存数据,ASPxGridView需要将从ASPxGridView数据源中获取的行数据对象的字段值复制到内部数据收集中。当ASPxGridView第一次显示时,这个数据收集会在内部隐藏字段(<input type="hidden" .../>)中序列化并呈现。若某一页面向服务器发送回发(或回调),则所有<input> 值(包括隐藏字段值)将自动在该页面post数据中进行传输。在服务器端上,隐藏字段中的行缓存数据将无序列化。

因ASP .NET引擎是在一个单独线程中处理网络请求的,所以各网络请求是相对独立的。此外,请求处理后才处理请求数据。因此可使用页面隐藏字段共享请求数据。

若ASPxGridView需要行数据,首先,ASPxGridView会搜索行缓存中的数据。若能找到所有必要数据,则ASPxGridView不会调用数据源。因行缓存只包含可见行数据,因此,若当前页面上的行列未改变,则行缓存有效。若数据执行分类、过滤和分页等操作,则该页面上会产生新的行。若行缓存中没有必要数据,则ASPxGridView将与其数据源进行绑定,从而能获得必要数据。

当用户进行选择,调节当前页面上的行和改变栏位置等等操作时,不会产生新的行。若另一页面控件已发出页面请求,则ASPxGridView数据将不会改变(除非请求时,服务器端上的ASPxGridView未被修改)。在这种情况下,行缓存也有用。

缓存和内部控件层次

ASPxGridView可包含大量内部控件:内置和置于模板中。根据ASP .NET页面生命周期,页面 ViewState(若启用)和post数据可应用于页面初始化和加载事件间的数据。为将ViewState和post数据正确应用到控件中,在引发页面初始化事件后ASPxGridView会重新创建这些数据。此时,任何用户操作(若有)都是不适用的。在用户执行某些操作时,客户端上的ASPxGridView会恢复到未修改状态。ASPxGridView可重新创建控件(模板和默认),并将ViewState和post数据应用到这些控件中。在这种情况下,可使用行缓存数据(若已启动),且不会发生数据绑定。之后,根据用户操作,若需要改变ASPxGridView状态,控件可与数据源进行绑定,从而获取需要的数据。所以,行缓存可避免数据绑定。

GetRowValues, GetRow, GetDataRow and Find...TemplateControl方法

若在后代码中调用ASPxGridView方法,则GetRowValues会返回行值。首先,ASPxGridView会在行缓存中搜索一个值。若找到了行数据,就不会产生数据绑定;若未找到数据,ASPxGridView将会与数据源进行绑定。

若调用'Find...TemplateControl' (FindDetailRowTemplateControl, FindEditFormTemplateControl, FindRowCellTemplateControl等) 方法中的任何一种方法,也是同样如此。

GetRow和GetDataRow方法只返回一个行数据对象,而非行值。ASPxGridView不会将用户的数据对象存储在行缓存中,因此,即使行缓存中包含行数据,上述方法也会导致数据绑定。

请注意,若行缓存是关闭的,ASPxGridView不会有任何数据,除非ASPxGridView是绑定的。若调用上述任一种方法,ASPxGridView将被强制与数据源进行绑定。

默认情况下,缓存是启用的。若需要,你可通过ASPxGridView.EnableRowsCache 设置关闭缓存。

本站文章除注明转载外,均为本站原创或翻译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:DevExpress控件中文网 [https://www.devexpresscn.com/]
本文地址:https://www.devexpresscn.com/post/309.html
在线
客服
微信
QQ 电话
023-68661681
返回
顶部