2012-04-30 22 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