Windows窗体:在DataGridView中显示子对象值

我有一个productVariant对象,它有子产品对象。 我想在DataGridView中显示值,任何人都可以让我知道如何做到这一点?

这是对象的结构。

替代文字

我试图将“ProductVariant.Product.Name”绑定到DataGridView中的DataProptertyName,但是,它没有显示任何值。

有人能帮忙吗? 非常感谢。

DataGridView控件无法自动绑定子对象。

如果您正在使用Win-forms,我的建议是创建两个Dialog窗口。

一个用于父对象(带有DGV),另一个用于子对象(带有DGV)。

当用户打开父窗口时,将在DGV中逐行加载父对象。

然后,如果用户双击父窗口上的一行,则子窗口将显示出来,并且该父窗口的子对象将填充在子窗口上的DGV上。

通过这种方式,无论亲子关系有多深,您都可以保持清洁。 此外,添加,编辑,删除等操作会更加清晰。

您还可以使用一些第三方控件,如HierarchicalDataGridView 。

WinForms绑定不允许遍历嵌套属性,尽管在WPF中可以这样做。 WinForms最简单的解决方案是在顶层添加一个属性(绑定的实际类型),表示你想要绑定的东西 – 丑陋,我知道。

您可以实现自定义TypeDescriptor并提供执行相同操作的PropertyDescriptor 。 对于在课堂外暴露的内容,这是最干净的解决方案,但这是一项非常重要的工作。