Комплексное связывание DataGridView - PullRequest
1 голос
/ 03 февраля 2011

Я хочу связать столбцы в 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
1     1-1.5     2-2.0     3-3.6
2     1-1.0     2-3.9     3-4.2
.
.
.

Единственное предложение, которое у меня было до сих пор и которое казалось работоспособным за короткий промежуток времени, было преобразовать это в набор данных и связать это, но это выглядит очень уродливо.

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 04 февраля 2011

Несколько раз у меня была сетка данных, в которой я хотел получить столбцы из нескольких разных мест. Самым простым способом, который я нашел, было создание класса отображения, который представляет собой просто набор методов-получателей для навигации по некоторой объектной модели. Затем я привязываюсь к этому классу отображения.

В этом примере вам нужно сделать что-то вроде этого:

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 голосов
/ 04 февраля 2011

Если вам нужно сделать очень сложные (и, возможно, странные) вещи с сеткой данных, тогда вы можете использовать SourceGrid в качестве элемента управления. Он очень гибкий и позволяет делать практически все с помощью сетки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...