2014-09-01 75 views
0

我有2个表(可以说订单和项目)订单具有对Items表的外键引用。项目有一个ItemType类型的字段,ItemType绑定到一个选择列表项目TypeA,typeB,TypeC ...在lightswitch应用程序的AutoCompleteBox中设置默认值

我已经创建了订单和项目的屏幕(列表详细信息屏幕),订单在RowLayout中呈现,项目在行布局内的数据网格中呈现。绑定到自动完成框的项目类型。

一切都按预期工作项目类型正在从关联列表中填充。

现在我想设置默认值的AutoCompleteBox让我们说,每当我在数据网格中创建一个新的行TypeA,我试图在Items_changed事件中设置ItemType属性,当行动是添加(NotifyCollectionChangedAction.Add)并尝试其他夫妇选项但没有成功。

我能够在Items_changed事件中设置简单属性的值,但无法设置ItemType。

有人可以告诉我该怎么做到吗?

回答

0

做起来相对简单。在Items实体的_Created()方法中,添加一行代码以分配默认类型值。我更喜欢使用查询表来实体本地枚举,所以我通常会通过LINQ查询来完成此操作。假设以下entitie集合:

  • 订单
  • 的OrderItems
  • OrderItemTypes

我的代码隐藏在的OrderItems的()方法创建会是这个样子。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.LightSwitch; 
namespace LightSwitchApplication 
{ 
    public partial class OrderItem 
    { 

     partial void OrderItem_Created() 
     { 
      this.Quantity = 0; 
      if ((from OrderItemType oit in DataWorkspace.ApplicationData.OrderItemTypes 
       where oit.IsDefaultOrderItemType == true 
       select oit).Count() > 0) 
      { 
       this.OrderItemType = (from OrderItemType oit in DataWorkspace.ApplicationData.OrderItemTypes 
             where oit.IsDefaultOrderItemType == true 
             select oit).FirstOrDefault(); 
      } 
     } 
    } 
} 

注意查询使用的OrderItemType实体IsDefaultOrderItemType领域确定为默认使用的OrderItemTypes条目。如果您愿意,您还可以使用OrderItemType.TypeName或您用于OrderItemType的任何描述符作为查询中的选择器。

希望有所帮助。 :)

PS:不要在_Changed()处理程序中以编程方式设置值,除非您想覆盖数据输入!

相关问题