我有一个名为PRODUCT
的表格,其中存储了产品的Price
。
因为我知道产品的价格可以随时改变,所以我有一个名为ORDER
的表,其中包含某人正在订购的产品的Quantity
,以及{{1} },这是在交易完成时应从列TodaysPrice
中提取的价格。
问题是,我不知道如何提取属性的值并将此值赋给LightSwitch中的另一个属性。
到目前为止,我设法考虑将其包含在Price
:
Order_Created()
但是上面的代码不起作用,我得到了这个例外:
this.Order.SelectedItem.Price = this.Order.SelectedItem.Product.Price;
我不确定这是否正确,任何帮助都会非常感激。我想知道如何使用Visual Studio 2010在LightSwitch 2011中执行此操作。
提前非常感谢!
答案 0 :(得分:0)
当 SelectedItem 或产品当前没有值时,您的代码可能正在运行。在引用实体的任何属性之前,应始终检查null。
像这样(注意在引用该实体的任何属性之前如何检查每个实体:
if (this.Order != null)
&& (this.Order.SelectedItem != null)
&& (this.Order.SelectedItem.Product != null)
{
this.Order.SelectedItem.Price = this.Order.SelectedItem.Product.Price;
}
* Order_Created *方法不是拥有此代码的正确位置,因为在创建 Order 时,您还不知道哪个产品将是选择。放置此代码的正确位置在* Product_Changed *方法中,因此当选择(或更改)产品时,产品的当前价格会被激活在订单。
另外请注意,除非您为示例简化了表格,否则我认为您错过了一张桌子。 订单通常会包含关联的客户,日期等内容。它还会包含 OrderLines (或类似的名称) OrderLine 应该有产品/数量/价格详细信息,而不是订单本身。