在C#中将复杂对象绑定到DataTable的单元格

ZuT*_*uTa 5 c# datatable binding

我有一个DataTable复杂的对象.

例如,

class ComplexDataWrapper
{
    public string Name{ get; set; }

    public ComplexData Data{ get; set; }

    public ComplexDataWrapper(ComplexData data)
    {
        this.Data = data;
        this.Name = "Something";
    }

    public override string ToString()
    {
        return Name;
    }
}
Run Code Online (Sandbox Code Playgroud)

而现在我想将细胞绑定DataTableComplexDataWrapper So的对象,我尝试这样的事情:

...
var column = new DataColumn() { ColumnName = columnName, DataType = typeof(ComplexDataWrapper)};
row[column] = new ComplexDataWrapper(data);
Run Code Online (Sandbox Code Playgroud)

但是,我想只绑定一个属性,例如Name.在gridview(DataTable这个视图的数据源)中我想编辑这个属性(Name).

var complexDataWrapper = row[column] as ComplexDataWrapper;
Run Code Online (Sandbox Code Playgroud)

complexDataWrapper始终等于NULL.

我知道我错过了什么.

所以我的问题:如何将我的细胞DataTable与复杂物体结合?另外在网格视图中我想编辑复杂对象的一个​​属性.

谢谢.希望一切都清楚.

HBo*_*omb 2

我相信你的架构对于你想要实现的目标来说是有缺陷的。

如果您使用 gridView 编辑复杂类型的单个属性,则无需将整个类型绑定到数据表中,数据表就是网格的数据源。

相反,您应该仅绑定要编辑的属性,当数据返回时,只需将其分配给正确位置的复杂类型即可。

  • @KevinBBurns 从你的解释来看,似乎你应该发布你自己的问题来描述你的问题。这个太具体了(双向绑定到单个嵌套属性),所以即使它解决了,我怀疑该解决方案是否适合您的情况。 (2认同)