DataGridView复杂绑定

时间:2011-02-03 20:56:45

标签: .net winforms datagridview

我想绑定DataGridView中的列以从两个不同的类中提取值。我的应用程序是在WinForms中。

我有这样的数据结构:

Class A
    Number As Integer
    Items as List(Of Class B)
End Class

Class B
    Number as Integer
    Value as Double
End Class

我需要能够在DataGridView中显示它,第一列是A.Number,后续列是Items列表中的每个项目。

Items
1     1-1.5     2-2.0     3-3.6
2     1-1.0     2-3.9     3-4.2
.
.
.

到目前为止我唯一可以在短时间内使用的建议是将其转换为数据表并将其绑定,但这看起来非常难看。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

有几次,我有一个数据网格,我想从几个不同的地方拉出列。我发现最简单的技术是创建一个显示类,它只是一组用于导航某些对象模型的getter方法。然后我绑定到那个显示类。

在这个例子中,你必须做这样的事情:

Class ADisplay
    private A target
    public ADisplay(A target)
        Me.target = target
    End

    public property Number
        return target.Number
    End

    public property Item0
        return FormatItem(0)
    End

    public property Item1
        return FormatItem(1)
    End
    ...
    private Function FormatItem(i as Integer) As String
        B item = target.Items(i)
        ' Now format that item
        ...

抱歉,我的VB.NET非常生疏,但我希望你能够明白这一点。

答案 1 :(得分:0)

如果您需要使用datagrid执行非常复杂(可能很奇怪)的事情,那么您可以使用 SourceGrid 作为控件。它非常灵活,它允许你用网格做几乎所有事情。