2014-09-01 96 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()處理程序中以編程方式設置值,除非您想覆蓋數據輸入!