.NET Compact Framework 网格控件





3.00/5 (5投票s)
本文指出了桌面和移动应用程序开发之间的几个关键区别。这些区别以标准 Visual Studio DataGrid 和 Resco SmartGrid for .NET CF 为例进行了比较。
引言
.NET Framework 和 .NET Compact Framework 之间存在许多差异,但许多开发人员却将桌面应用程序迁移到移动平台,就好像它们是相同的。微软通过创建 .NET Framework 和 .NET Compact Framework 所做的出色工作,使迁移变得更加容易。尽管如此,.NET Compact Framework 仍有许多特有的细节是优秀的开发人员必须考虑的。采用一个桌面解决方案,移除不支持的方法并为 Compact Framework 重新编译通常可以工作,但会导致应用程序外观不佳(通常是因为移除了不支持的方法)、难以控制(因为它们是为依赖鼠标的桌面设计的)并且速度缓慢(仅仅因为处理器速度比桌面慢 5 倍甚至更慢)。
让我们来看看标准的 Visual Studio DataGrid,这是 .NET 开发人员中一种流行的控件,可用于以表格形式显示数据。Compact 版本的 DataGrid 的问题在于,它是为桌面环境设计的,然后才被集成到 .NET CF 中。在本文中,我将展示在开发移动应用程序时可能遇到的一些典型问题,以及如何使用从头开始为移动设备设计的网格控件来解决这些问题。
数据加载
DataGrid 是处理 ADO.NET 的一个不错的控件。然而,ADO.NET 在 .NET CF 上用处不大,因为它会将整个数据库复制到内存中,这既慢又占用内存。此外,除了使用数据绑定之外,没有简单的方法可以手动向 DataGrid 中插入新数据行。Resco SmartGrid for .NET CF 不仅提供了一种添加新数据行的简单方法,而且最重要的是,它易于通过 Visual Studio 的设计器进行操作和自定义。添加数据行意味着将 Row 对象添加到 SmartGrid 的行集合中。
图形功能
虽然在台式电脑上用户还可以比较舒适地查看一个包含 20 列的网格,但在移动设备上,即使是显示 4 列也可能是一个问题。在移动设备上,每个像素都非常宝贵,并且可能用于渲染数据。纯文本普遍用于描述各种数据类型,但它也很占用空间。为了最大限度地利用屏幕上的每一个像素,使用图形非常有帮助。
想象一下,我们有一个数据库表,其中包含产品名称、月度销售额(美元)、与上个月相比的增长或下降百分比以及库存信息。此类信息可以用文本描述(当使用 DataGrid 时这是唯一的选择),或者可以像图 1 所示的那样以图形方式表示。月度销售额中数字的颜色已经告诉用户是增长还是下降。因此,箭头图标并非必需,但它们提高了用户快速区分增长产品和下降产品的能力。复选框也比纯粹的 True/False 文本字符串或 1/0 数字更方便地指示库存可用性。购物车图标可以提供更多关于产品可售性的信息。开发人员可以轻松地处理对购物车图标的点击,并执行有意义的操作,例如显示订购表单。

图 1
延迟加载
移动设备应用程序开发的一个大问题是速度。如果数据库表包含许多行,加载和显示数据可能需要很长时间。然而,对于 Resco SmartGrid for .NET CF 来说,由于其延迟加载技术,情况并非如此。当启用此功能时,SmartGrid 只加载当前可见的数据,并在需要时加载其他数据。此功能使应用程序能够在一秒内显示网格表单,无论底层表包含多少行。在移动应用程序在线连接到远程数据库的情况下,延迟加载使应用程序响应更快,并且也减少了数据库服务器的负载。
内置自动编辑
尽管网格控件主要用于显示数据,但在某些情况下,将其用于数据编辑也很方便。为此,Resco SmartGrid 支持内置自动编辑。此功能允许开发人员设置 SmartGrid 的列,以便它自动显示一个合适的控件,允许用户编辑列数据。可以使用 TextBox、CheckBox 或任何其他现有的自定义控件来编辑数据。图 2 显示了 Resco SmartGrid 在订购表单中的使用情况。


结论
要将应用程序从桌面计算机最佳地移植到移动设备可能会很棘手。选择合适的控件无疑会在应用程序速度、专业外观和使用舒适性方面带来更令人满意的结果。Resco SmartGrid 是一个 .NET Compact Framework 控件,专为移动设备设计。除了其众多高级功能(如触摸滚动、延迟加载、XML 序列化)外,它还是标准 Visual Studio DataGrid 控件的强大替代品。
Resco SmartGrid 控件是 Resco MobileForms Toolkit 的一部分。您可以在 此处找到有关 Resco MobileForms Toolkit 的更多信息。