Welcome

首页 / 软件开发 / .NET编程技术 / 数据点: 列表达式、DataRelations和计算

数据点: 列表达式、DataRelations和计算2011-10-30 msdn John PapaADO.NET 决不只是让您能够从数据库中检索数据或向数据库中存储数据。它还具有许多功能,可对数 据进行操作,以用于业务逻辑分析和在实际的应用程序中显示。正如本专栏中的示例所示,ADO.NET 并不 仅仅是一个数据存取工具,还可用于数据操作。

在本月的专栏中,我将专门回答一些有关使用 ADO.NET 进行数据操作的常见问题。我将讲述如何使用 基于表达式的列和 DataRelations 来达到特定目的。此外,我还将讲述如何使用其他功能(例如 DataTable 的 Compute 方法和 SetOrdinal 方法)来满足一般业务需要。

问:我想使用 DataTable 逐个订单地显示订单信息并将其显示在汇总分组(按天、月和年)中。我希 望能够编辑订单信息,而且父 DataTable 中的合计必须立刻反映出所做的更改。我希望每一组数据都显 示在该窗体的单独的网格中。在 DataTable 中加载了数据之后,如何使用 ADO.NET DataColumn 表达式 创建带有每组订单小计的分组信息?

问:我想使用 DataTable 逐个订单地显示订单信息并将其显示在汇总分组(按天、月和年)中。我希 望能够编辑订单信息,而且父 DataTable 中的合计必须立刻反映出所做的更改。我希望每一组数据都显 示在该窗体的单独的网格中。在 DataTable 中加载了数据之后,如何使用 ADO.NET DataColumn 表达式 创建带有每组订单小计的分组信息?

答:您可以轻松创建计算字段,方法是使用 SQL 语句中的计算表达式或创建一个绑定了表达式的 DataColumn。这两种方法的原理和它们呈现的功能有所不同。

答:您可以轻松创建计算字段,方法是使用 SQL 语句中的计算表达式或创建一个绑定了表达式的 DataColumn。这两种方法的原理和它们呈现的功能有所不同。

对于您的情况和要求,SQL 语句中的计算列不是最有效的方法。最好将基于表达式的 DataColumn 添 加到一系列 DataTable 中。

在深入讲述此问题之前,我们先看一下我们要实现的最终结果(参见图 1)。此示例在一个窗体中显 示了五个网格。最顶部的网络包含单独的订单行项。此网格中每个订单行的价格、数量和折扣都可以编辑 。在编辑了这些值后,系统会为该行计算扩展价格,其他四个网格中的合计值也会自动重新计算并显示最 新的合计以反映出所作的更改。在第二个网格中,每个订单占一行,包括显示该订单的扩展价格小计的计 算列。第三、第四和第五个网格分别按天、月和年显示每个订单的小计。

图 1 按天、月和年的订单合计