我有一个带有子集LineItems的L2S SalesOrder实体。使用winforms,在我的销售订单表单上,我有一个绑定到LineItems的datagridview,它就像一个梦想。如果用户更改LineItem数量(例如),我的LineItem分部类将处理OnQuantityChanged并重新计算LineItem SubTotal字段,并自动更新网格。它是多么干净和整洁,我欣喜若狂。
现在我想在SalesOrder对象上有一个名为“Total”的计算字段,它是所有LineItems的SubTotal字段的总和(加上一些其他的东西,如税和运费,但不要担心现在)。每当LineItem发生变化时,SalesOrder的Total字段可以自动更新的最佳/最干净方式是什么?如果有人能指出我正确的方向,我会非常感激。
不知道它是否有所作为,但我正在使用Rick Strahl's Linq To SQL business framework(这太棒了,BTW!)。
谢谢!
答案 0 :(得分:0)
您可能需要查看Bindable LINQ:
Bindable LINQ是一组扩展 到LINQ,添加数据绑定和 将传播能力改为 标准LINQ查询。
答案 1 :(得分:0)
这实际上比我想象的要容易。我将ReCalculate()添加到我的SalesOrder然后我可以从我的LineItem中调用它,就像这样......
Partial Class SalesOrderLineItem
Private Sub OnQuantityChanged()
RefreshMySubTotal()
End Sub
Private Sub OnUnitPriceChanged()
RefreshMySubTotal()
End Sub
Private Sub RefreshMySubTotal()
Dim dNewSubtotal As Decimal = 0
dNewSubtotal = Me.Quantity * Me.UnitPrice * (1 - (Me.Discount * 0.01))
If Me.SubTotal <> dNewSubtotal Then
Me.SubTotal = dNewSubtotal
If Me.SalesOrder IsNot Nothing Then Me.SalesOrder.ReCalculate()
End If
End Sub