2012-04-30 47 views
0

我有2個實體,Line具有多個Tags更新投影背後的數據?

enter image description here

在我的UI我有一個列表框:

enter image description here

此列表框綁定到一個投影:

var tagNames = someline.Tags.OrderBy(x=>x.Name).Select(x => x.Name).ToList(); 
var tagsList = from t in rs.Tags join n in tagNames on t.Name equals n into tags select new { Name = t.Name, IsTagged = tags.Any()}; 
dgvTags.DataSource = tagsList; 

問題:

我想請選中該複選框,它會自動添加標籤/或移除Line.Tags收集的選中標記。這是可能的一個簡單的方法,或者我必須趕上點擊和做的工作,刷新網格?

問題2 ...在我能做到上述之前我注意到複選框甚至沒有檢查,是否有這樣的原因?

非常感謝提前。

回答

2

如果您將數據源綁定到投影,您將創建類似只讀(單向)數據綁定的東西 - 後面沒有可以更新的實體。而且這對於一些自動數據綁定來說並不是這樣。您正在顯示有關所有標籤的信息,並選擇必須將哪些標籤添加到您的線路中。這意味着您必須手動處理由您的用戶界面觸發的事件,獲取所選標記的ID並使用它將實際標記實體添加到您的線路。

+0

正如我想的,謝謝。我問的原因是因爲我是linq&EF函數的初學者,所以我不知道是否有更好的方法。 – sprocket12