> 在 lbOrders_SelectedIndexChanged 事件处理程序中,将以下代码添加到 Dim details As String = "" 或 string details = "" 行之下:
' Visual Basic
details = "订单总计: " & String.Format("{0:c}", _
DsNorthwind1.Orders.FindByOrderID(CType(lbOrders.SelectedItem, _
Integer))("OrderTotal")) & ControlChars.CrLf
// C#
details = "订单总计: " +
String.Format("{0:c}",dsNorthwind1.Orders.FindByOrderID
((int)lbOrders.SelectedItem)["OrderTotal"]) + "\n";
运行应用程序。
在列表框中选择一个订单,
请注意,选定订单的所有订单明细的总计金额将显示在 RTF 文本框中的第一行。
在列表框中选择另一个订单,将更新显示以反映新选择的订单。
关闭窗体。
添加包含逻辑求值的表达式列
Expression 属性可以基于其他列中的计算值来填充某个数据列。例如,订单表中的 OrderSize 列可以包含值“Big”(如果订单总额大于 1000)或者“Small”(如果订单总额小于 1000)。
为演示这类表达式,需要在 DataRelationExample 应用程序中添加代码以执行以下操作:
在订单表中添加名为 OrderSize 的数据列。
根据相关订单明细的值来填充 OrderSize 列。
在 RTF 文本框的顶部同时显示 OrderSize 列的值和 OrderTotal 的值。
添加创建 OrderSize 列的代码
在 Solution Explorer(解决方案资源管理器)中,右键单击 Form1 并从快捷菜单中选择 View Code(查看代码)。
在 Form1_Load 事件处理程序中,将以下代码添加到在订单表中创建 OrderTotal 列的代码的下方:
' Visual Basic
' 在订单表中创建名为 OrderSize 的表达式列。
Dim dcOrderSize as DataColumn = new DataColumn("OrderSize")
dcOrderSize.DataType = System.Type.GetType("System.String")
dcOrderSize.Expression = "IIF(Sum(Child.Total)<1000,'Small','Big')"
DsNorthwind1.Orders.Columns.Add(dcOrderSize)
// C#
// 在订单表中创建名为 OrderSize 的表达式列。
DataColumn dcOrderSize = new DataColumn("OrderSize");
dcOrderSize.DataType = System.Type.GetType("System.String");
dcOrderSize.Expression = "IIF(Sum(Child.Total)<1000,'Small','Big')";
dsNorthwind1.Orders.Columns.Add(dcOrderSize);
显示 OrderSize 的值
在 lbOrders_SelectedIndexChanged 事件处理程序中,将以下代码添加到第一个 For Each 行的上方:
' Visual Basic
details &= " (" & CType(DsNorthwind1.Orders.FindByOrderID _
(CType(lbOrders.SelectedItem, Integer))("OrderSize"), String) & ")" _
& ControlChars.CrLf
// C#
details += " (" + dsNorthwind1.Orders.FindByOrderID
((int)lbOrders.SelectedItem)["OrderSize"] + ")\n";
运行应用程序。
在列表框中选择一个订单。
检查 RTF 文本框中的第一行。选定订单的 OrderSize 将显示在 OrderTotal 的右侧。
在列表框中选择另一个订单,将更新显示以反映新选择的订单。
从 Debug(调试)菜单中,选择 Stop Debugging(停止调试)。
' Visual Basic
details = "订单总计: " & String.Format("{0:c}", _
DsNorthwind1.Orders.FindByOrderID(CType(lbOrders.SelectedItem, _
Integer))("OrderTotal")) & ControlChars.CrLf
// C#
details = "订单总计: " +
String.Format("{0:c}",dsNorthwind1.Orders.FindByOrderID
((int)lbOrders.SelectedItem)["OrderTotal"]) + "\n";
运行应用程序。
在列表框中选择一个订单,
请注意,选定订单的所有订单明细的总计金额将显示在 RTF 文本框中的第一行。
在列表框中选择另一个订单,将更新显示以反映新选择的订单。
关闭窗体。
添加包含逻辑求值的表达式列
Expression 属性可以基于其他列中的计算值来填充某个数据列。例如,订单表中的 OrderSize 列可以包含值“Big”(如果订单总额大于 1000)或者“Small”(如果订单总额小于 1000)。
为演示这类表达式,需要在 DataRelationExample 应用程序中添加代码以执行以下操作:
在订单表中添加名为 OrderSize 的数据列。
根据相关订单明细的值来填充 OrderSize 列。
在 RTF 文本框的顶部同时显示 OrderSize 列的值和 OrderTotal 的值。
添加创建 OrderSize 列的代码
在 Solution Explorer(解决方案资源管理器)中,右键单击 Form1 并从快捷菜单中选择 View Code(查看代码)。
在 Form1_Load 事件处理程序中,将以下代码添加到在订单表中创建 OrderTotal 列的代码的下方:
' Visual Basic
' 在订单表中创建名为 OrderSize 的表达式列。
Dim dcOrderSize as DataColumn = new DataColumn("OrderSize")
dcOrderSize.DataType = System.Type.GetType("System.String")
dcOrderSize.Expression = "IIF(Sum(Child.Total)<1000,'Small','Big')"
DsNorthwind1.Orders.Columns.Add(dcOrderSize)
// C#
// 在订单表中创建名为 OrderSize 的表达式列。
DataColumn dcOrderSize = new DataColumn("OrderSize");
dcOrderSize.DataType = System.Type.GetType("System.String");
dcOrderSize.Expression = "IIF(Sum(Child.Total)<1000,'Small','Big')";
dsNorthwind1.Orders.Columns.Add(dcOrderSize);
显示 OrderSize 的值
在 lbOrders_SelectedIndexChanged 事件处理程序中,将以下代码添加到第一个 For Each 行的上方:
' Visual Basic
details &= " (" & CType(DsNorthwind1.Orders.FindByOrderID _
(CType(lbOrders.SelectedItem, Integer))("OrderSize"), String) & ")" _
& ControlChars.CrLf
// C#
details += " (" + dsNorthwind1.Orders.FindByOrderID
((int)lbOrders.SelectedItem)["OrderSize"] + ")\n";
运行应用程序。
在列表框中选择一个订单。
检查 RTF 文本框中的第一行。选定订单的 OrderSize 将显示在 OrderTotal 的右侧。
在列表框中选择另一个订单,将更新显示以反映新选择的订单。
从 Debug(调试)菜单中,选择 Stop Debugging(停止调试)。
| 对此文章发表了评论 |

