我有2个实体,Line
有多个Tags
:
在我的界面中,我有一个列表框:
此列表框绑定到投影:
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 ......在我能做到以上之前我已经注意到复选框甚至没有检查,这是否有原因?
非常感谢提前。
答案 0 :(得分:2)
如果将数据源绑定到投影,则会创建类似readonly(单向)数据绑定的东西 - 后面没有可以更新的实体。此外,这不是某些自动数据绑定的情况。您正在显示有关所有标记的信息,并选择必须将哪些标记添加到您的行中。这意味着您必须手动处理由UI触发的事件,获取所选标记的Id并使用它将真实标记实体添加到您的行。