跳至正文
首页 » 博客 » Connect XamDataGrid to an OData Remote Data Source to Beat Device Resource Limitations

Connect XamDataGrid to an OData Remote Data Source to Beat Device Resource Limitations

使数据可用/下载到具有受限资源的移动设备可能并不总是可能的。设备限制的解决方案是仅从服务器获取一次显示所需的数据。我们已经为这样的场景实现了OData虚拟数据源。

OData虚拟数据源将连接到OData服务,并允许您滚动大量记录,同时一次只在客户端上保留选定的几个记录。它还支持在服务器上执行排序和过滤,而不需要先将整个数据集拉到客户端。

下面是如何将XamDataGrid连接到远程数据源。创建Xamarin.Forms应用程序。然后将XamDataGrid添加到页面并定义要在其中显示的列。

< ig: XamDataGrid ItemsSource = "{ Binding}"AutoGenerateColumns = "True"RowHeight = "80"SelectionMode = "MultipleRow" >< ig: XamDataGrid.Columns >< ig: NumericColumn PropertyPath = "OrderID" HeaderText = "Order ID" />< ig: TextColumn PropertyPath = "CustomerID" HeaderText = "客户ID"/>< ig: TextColumn PropertyPath = "ShipName" HeaderText = "Ship Name" />< ig: TextColumn PropertyPath = "ShipCity" HeaderText = "Ship City" />ig:XamDataGrid.Columns> ig:XamDataGrid>

接下来,您需要引用DataSource.DataProviders.OData.Core.dll,因为这是我们的OData虚拟数据源所在的位置。选择您想要连接的端点,例如返回OData的Web服务。将Web服务的URI设置为BaseUri。选择要用作EntitySet的集合。虚拟数据源请求称为页的块中的数据。它在幕后执行这项工作,并允许您假装对数据进行简单的列表样式访问。应将PageSizeRequested设置为要返回的记录数的合理值。太低的值将意味着对服务器的更多请求,而太大的值可能不受OData提供程序的支持,或者可能会减慢获取和解码数据的速度。像20-50这样的东西通常效果很好。MaxCachedPages属性将确定在丢弃最近最少使用的页之前可以将多少页保留到内存中。在我们的示例中,由于PageSizeRequested设置为25,MaxCachedPages为5,因此一次保存在内存中的记录数将为125。

以下代码段显示了如何设置OData虚拟数据源以连接到Northwind示例数据OData服务托管的o n odata.org:

var dataSource = ODataVirtualDataSource (){" http://services.odata.org/V4/Northwind.svc"EntitySet = "订单"PageSizeRequested = 25,MaxCachedPages = 5};这个 .BindingContext = dataSource; 

要运行该示例,请还原所需的Infragistics NuGet包 (更多信息请点击此处 ),编译应用程序并将其部署到设备/仿真器/模拟器。

请注意,您可以连续滚动网格中的数据而不会停止。网格实际上是预测哪些页面需要在你到达它们之前加载,这样你就不会看到任何缺失的记录。但是,如果您滚动得足够快,您可能会注意到一些占位符在实际数据消失之前,在下载后短暂显示。

您会注意到,即使对数据网格进行排序也是有效的!这导致针对服务器的页面的查询被修改,以便可以在服务器端对数据进行排序,并且仅将所需的页面发送到客户端。过滤数据也是如此。

兴奋地尝试一下?下载Infragistics Ultimate UI Controls for Xamarin的试用版以开始使用。下面是指向示例应用程序的链接。尽情享受吧!</p