我坚持一个通常我甚至都不会面对的问题,但在这种情况下,这似乎是一个大问题。
首先,为了避免混淆,即使我已经在标题中写了它,我们也谈论的是Windows Forms(不是WPF,也不是Web相关的应用程序)。
我有一个DataGridView,其数据源来自实体的导航属性(实体框架5,代码优先)。
此数据网格包括“IdEquipment”和“IdConfiguration”等字段。 两列都是DataGridViewComboBoxEditingControl类型。 IdEquipment由BindingSource控件填充,即“Equipment”:
_context.Equipments.Local.ToBindingList();
“Configuration”表作为外键“IdEquipment”和组合框必须如何在datagrid的每一行中表示这个表的子集。
要做到这一点,经过一些不成功的测试并在SO和其他地方搜索,我发现this solution,特别关注dataGridView1_EditingControlShowing
和dataGridView1_CellValueChanged
。
这似乎是正确的方向,但问题是当我过滤IdEquipment组合框的数据源时(也是绑定到_context.Configurations.Local.ToBindingList();
的另一个BindingSource控件。
我读过某个地方,因为我正在使用实体,我应该调用.ToList()
而不是.ToBindingList()
,但即使在这种情况下,也不会发生过滤(无论如何我认为BindingList仍然很好。
我可以使用的另一个选项是利用第一个组合框的选定值/实体,并获取Equipment.Configuration导航属性,但我不知道如何使用DataGridViewComboBoxEditingControl执行此操作。
任何帮助?
答案 0 :(得分:1)
经过几个小时的努力,我最终找到了最适合我需求的解决方案:我不知道这是否是解决方案。