服务器模式和即时反馈模式
服务器模式
服务器模式是为了让您能够处理大型数据集而设计的。绑定的数据不会被全部加载到内存中。相反,GridControl根据需求加载小部分数据。当GridControl启动时,它从数据存储中加载并显示第一部分数据。然后,当用户滚动网格,并到达加载子集的最后一条记录时,网格请求数据存储返回后续的数据部分。GridControl在服务器端执行所有的数据感知操作。
在常规的数据绑定模式下,在网格控件内显示之前,必须将数据从数据存储中完整地获取到内存中。记录的数量是一个瓶颈,因为记录越多,加载数据所需的时间就越多。此外,网格的性能也取决于加载记录的总数,特别是当数据被排序、分组、过滤或使用摘要功能时。在这种情况下,网格需要处理整个记录集来实现特定的数据感知操作。
如果GridControl绑定到支持DevExpress.Data.IListServer接口的数据源上,它将自动在服务器模式下运行。目前,您可以使用LinqServerModeSource、XPServerCollectionSource、EntityServerModeSource或WcfServerModeSource组件作为服务器模式下的数据源。这些组件支持IListSource接口,并通过它们的List属性返回实现DevExpress.Data.IListServer接口的列表。
如果一个数据源没有实现DevExpress.Data.IListServer接口,服务器模式就不可用。
服务器模式不能用于主-从模式。
即时反馈模式
即时反馈模式与服务器模式在概念上非常相似,数据只检索填充视图所需的部分,数据感知操作在服务器上执行。然而,即时反馈模式是一种异步的服务器模式。区别在于当数据被检索和填充时,网格如何表现。
当用户在服务器模式下滚动浏览记录时,网格首先等待部分数据被获取,然后再填充行。根据数据源的性能、被检索的数据量和网络连接,用户可能会注意到相当大的控制冻结。即时反馈模式解决了这一问题,在检索数据的同时继续响应用户的操作。用户可以继续滚动浏览记录,甚至对控件的数据进行重新排序、重新分组和重新过滤。如果需要,该控件将取消之前的请求,并向数据源发起新的请求。
要激活这个功能,请使用我们专门设计的数据源--LinqInstantFeedbackDataSource、XPInstantFeedbackSource、EntityInstantFeedbackDataSource或WcfInstantFeedbackDataSource。
为了避免线程安全问题,如果它们的 AreSourceThreadSafe 属性没有设置为 false,所有即时反馈数据提供者都会检索对象的包装器,但不会检索实际对象。在 XAML 中绑定时,使用下面代码片段中所示的数据对象。
<Setter Property="ToolTip" Value="{Binding Path=Data.Parameter.Description}" />你也可以使用一个特殊的转换器--dxg:RowPropertyValueConverter,从包装器中获取一个值。请看下面的例子。
RowStyle
<dxg:RowPropertyValueConverter x:Key="rowPropertyConverter" /> ... <DataTrigger Binding="{Binding Path=DataContext, Converter={StaticResource rowPropertyConverter}, ConverterParameter=IsSeen}" Value="True"> <Setter Property="FontWeight" Value="Bold" /> </DataTrigger>CellStyle/CellTemplate
<dxg:RowPropertyValueConverter x:Key="rowPropertyConverter" /> ... <TextBlock Text="{Binding Converter={StaticResource rowPropertyConverter}, ConverterParameter=yourPropertyName}" />为了提供视觉反馈,即时反馈绑定模式还包括显示指示网格内操作状态的动画的选项。
Property | Description |
---|---|
DataViewBase.RowAnimationKind | Specifies which animation is played while data is being asynchronously retrieved by the data source. |
DataViewBase.WaitIndicatorType | Specifies how asynchronous data loading operations are indicated. |
DataViewBase.WaitIndicatorStyle | Specifies the template that defines the wait indicator's presentation. |