【问题标题】:Binding from object to devexpress grid从对象绑定到 devexpress 网格
【发布时间】:2017-01-24 13:32:16
【问题描述】:

我有一个正常的数据绑定情况,我的基础问题对象属性绑定到 devexpress XtraGrid.GridControl 中的列。但是,我有一个文本属性,其形式为“{Question|True},{Question|False}”。这些必须映射到网格中的复选框(每个属性可能有很多)。是否可以使用数据绑定将此字符串属性直接绑定到单元格,提供复选框编辑,也许使用CheckedComboBox?我想我需要在绑定过程中进行一个中间步骤,将原始字符串映射到复选框,然后从复选框映射回字符串。

否则我目前的想法是创建另一层对象,其中包含每个复选框选项的新对象,但如果我可以通过从上述文本到 CheckComboBox 中的复选框的映射以某种方式中断默认绑定过程我可以直接绑定到底层对象。

【问题讨论】:

  • DX 网格在绑定方面非常灵活。所以我相信它应该可以实现你想要的。但首先请提供 UI 草图的屏幕截图,说明您希望这些复选框在网格行/单元格中的外观。

标签: c# winforms devexpress devexpress-windows-ui


【解决方案1】:

如果我理解你的话,我认为你应该改变你的问题对象 包含布尔属性。 Bool 属性作为复选框绑定到网格,因此它将自动工作。 我知道您对该属性的实际价值应该是字符串“{Question|True}” 因此您可以通过这种方式设置该属性:

    private string question;

private bool questionBool;
public bool QuestionBool{
get{return questionBool;}
set{
if(value) 
   question = "{Question|True}"};
else
   question = "{Question|False}";

questionBool = value;

}

【讨论】:

  • 感谢 Paweł,但我遇到的问题是在同一个字段中编码了多个复选框。
【解决方案2】:

我最终将文本转换为 CheckboxQuestionAndAnswer 对象的集合,然后将其绑定到网格,然后将它们转换回单个文本字符串以将数据写回。

【讨论】: