C# 在绑定到同一bindingsource的TextEdit中编辑GridControl中选定的多行

C# 在绑定到同一bindingsource的TextEdit中编辑GridControl中选定的多行,c#,winforms,data-binding,devexpress,multi-select,C#,Winforms,Data Binding,Devexpress,Multi Select,我的设置: C#.Net 4.0、Windows窗体、DevExpress 13.1.5,尽管我怀疑这是DX问题 我有一个表单,上面有一个GridControl(带GridView),下面有一个细节区域,其中包含文本编辑和布局控件中的其他编辑。 下面的网格和编辑都绑定到绑定源中列表中包含的对象的属性。 网格设置为只读、MultiSelect、RowSelect,其所有列都设置为只读,不可聚焦。 编辑仅在下面的详细信息区域中进行 我想要创建的行为: 在网格中选择多行时,下面的编辑应显示以下内容:

我的设置:

C#.Net 4.0、Windows窗体、DevExpress 13.1.5,尽管我怀疑这是DX问题

我有一个表单,上面有一个GridControl(带GridView),下面有一个细节区域,其中包含文本编辑和布局控件中的其他编辑。 下面的网格和编辑都绑定到绑定源中列表中包含的对象的属性。 网格设置为只读、MultiSelect、RowSelect,其所有列都设置为只读,不可聚焦。 编辑仅在下面的详细信息区域中进行

我想要创建的行为:

在网格中选择多行时,下面的编辑应显示以下内容:

  • 在所有选定行中,相关字段的值都相同->显示值
  • 问题字段的值在行->无显示之间不同
如果用户在选择多行时写入TextEdit:

  • 编辑的值应更新所有选定行的同一字段的值
我现在的处境:

我正在开发一个解决方案,通过构建一个定制的BindingSource来了解选择。它将对象列表绑定到网格,并将不属于列表的单个对象绑定到编辑。根据选择,我将设置单个对象的属性或将其更改转发到列表中的选定对象

我为一个具有2个绑定源的单一属性工作,现在将其扩展为使用反射来为所有公共属性执行此操作。我还想通过添加的行为将整个行为封装到一个看起来和行为都像BindingSource的类中

问题:


有没有更简单的方法来实现这一点?是否已经存在我在.Net或DevXPress中忽略的可以实现这一点的东西?在我的方法中有陷阱吗?我应该考虑,或者为什么我应该完全不同地去做这个问题?

< P>我认为你可以用一个更简单的方式实现你的目标:

只需将一个BindingSource与您需要的所有数据绑定到网格。这应该会显示数据

然后,从同一个BS绑定所需的字段,并通过DataBindings属性进行编辑

然后可以(通过控件或编程方式)实现保存对象,以便在网格中显示编辑中所做的更改

要检查网格值,可以使用:

//get the handles of the rows
gridView.GetSelectedRows();

//get the value of the desirable cells
gridView.GetRowCellValue(handle, column);

此外,在以后的项目中,考虑使用基于数据库元素构造数据感知模型和自定义对象。


希望这有帮助

有趣的问题,也许您应该在devexpress支持部门问这个问题,这样您就更有可能得到您想要的东西。