2011-02-03 76 views
1

我想綁定DataGridView中的列以從兩個不同的類中提取值。我的應用程序在WinForms中。DataGridView複合綁定

我有一個數據結構是這樣的:

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

Class B 
    Number as Integer 
    Value as Double 
End Class 

我需要能夠與所述第一列被A.Number和後續列是在項目列表中的每個項目一個DataGridView顯示這些。

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

唯一的建議,到目前爲止我已經似乎在短時間內可行的是將其轉換爲一個DataTable和綁定的是,但這似乎非常難看。

感謝您的幫助!

+0

你可以使用LINQ嗎?你可以使用selectmany/grouping操作符,然後將其平鋪到列表中。你仍然最終會手動創建/編輯列。 – 2011-02-03 21:01:56

回答

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是很生疏,但我希望這是很清楚,你得到的想法。

0

如果你需要用datagrid做很複雜的事情(也許很奇怪),那麼你可以使用SourceGrid作爲控件。它非常靈活,它可以讓你用網格完成幾乎所有的事情。