我正在使用LightSwitch(学习..)与 VB.Net ,这是我的问题:
我有一些名为tOrder
和tProduct
的表格
我在tOrder中创建了一个具有UNITPRICE和TOTALPRICE的计算属性。总价格很容易制作:
Private Sub totalPrice_Compute(ByRef result As Decimal)
result = quantity * unitPrice
End Sub
问题在于unitPrice
。我找不到根据用户选择自动分配Price
中tProduct
的值的方法。可以说在tProduct
中有3种产品。产品A的价格为5,产品B的价格为10,产品C的价值为20.我需要在“新订单”的屏幕中根据用户的选择(如果用户想要ProductA / Product) B /产品C)UnitPrice
tOrder
自动更改,以便用户查看Price
中tProduct
的实际价格。
我尝试过:
Private Sub unitPrice_Compute(ByRef result As Decimal)
result = Me.tProduct.price
End Sub
但是出现了一个错误:NullReferenceException was unhandled by user code
我也试过了:
Private Sub unitPrice_Compute(ByRef result As Decimal)
If Me.tProduct.nameProduct <> Nothing Then
result = tProduct.price
Else
result = 0
End If
End Sub
但同样的错误..
我不知道如何解决它,或者在哪里,何时,如何...我是LightSwitch的新手,如果你帮助我,我将非常感激..
非常感谢!
答案 0 :(得分:1)
在 tProduct 实际具有值之前调用了您的代码,因此引用其 Price 属性会导致错误。
你的第二段代码非常接近。它只需要:
Private Sub unitPrice_Compute(ByRef result As Decimal)
If (Me.tProduct IsNot Nothing) Then
result = Me.tProduct.price
Else
result = 0
End If
End Sub
您应该始终检查 null (或VB中的 Nothing ),换句话说,实体具有值,然后再使用任何值它的属性。此外,您无法使用&lt;&gt; 与 Nothing 进行比较,您必须使用是或 IsNot
更简单的替代方法是编写这样的代码(虽然上面的版本也很好):
Private Sub unitPrice_Compute(ByRef result As Decimal)
result = If(Me.tProduct Is Nothing, 0, Me.tProduct.price)
End Sub