Привязать массив строк к столбцу таблицы данных

Я проектирую winform, у которой есть датагридвью.
Я присваиваю данные этому сетевому представлению.

<code>DataTable dt = new DataTable();
dt.Columns.Add("items", typeof(string[]));
dt.Columns.Add("dateSold", typeof(string));

for (int i = 0; i < 6; i++)
{
    dt.Rows.Add(dt.NewRow());
    dt.Rows[i]["items"] = new string[] { "pencil" + i, "sharpner" + i };
    dt.Rows[i]["dateSold"] = "0" + i + "/0" + i + "/0" + i;
}
dataGridView1.DataSource = dt;
</code>

Элементы столбца - это массив строк. Я хочу показать этот массив в одном столбце сетки. Но простое назначение источника данных в качестве источника данных для сетки данных не помогает.

 ImGreg10 апр. 2012 г., 21:35
Что именно происходит?

Ответы на вопрос(1)

Решение Вопроса

Синтаксис, который вы используете, немного странный. Существуют перегрузки, которые позволят вам добавить новую строку и установить значение одновременно.

Кроме того, вы не можете иметь строковый массив как поле для ячейки. Вместо использования DataTable вы можете создать собственный класс и связать их список с DataGridView. Таким образом, вы можете иметь базовое поле, которое представляет собой массив строк, а затем иметь открытое свойство, которое форматирует их по своему желанию, а затем отображает в DataGridView.

Вот пример того, как подойти к этому:

Imports System.ComponentModel

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim sales As New BindingList(Of SaleTransaction)

        For i As Integer = 1 To 6
            sales.Add(New SaleTransaction(i))
        Next

        ' None of this is necessary since the DGV will automatically read the public properties.. '

        DataGridView1.AutoGenerateColumns = False

        Dim itemsColumn As New DataGridViewTextBoxColumn

        itemsColumn.HeaderText = "Items"
        itemsColumn.ValueType = GetType(String)
        itemsColumn.DataPropertyName = "Items"

        DataGridView1.Columns.Add(itemsColumn)

        Dim dateColumn As New DataGridViewTextBoxColumn

        dateColumn.HeaderText = "Date Sold"
        dateColumn.ValueType = GetType(String)
        dateColumn.DataPropertyName = "DateSold"

        DataGridView1.Columns.Add(dateColumn)

        DataGridView1.DataSource = sales

    End Sub

    Public Class SaleTransaction
        Private _items As List(Of String)

        Public ReadOnly Property Items As String
            Get
                Return String.Join(", ", _items)
            End Get
        End Property

        Public Property DateSold As Date

        Public Sub New(ByVal itemNumber As Integer)
            Me._items = New List(Of String) From {"Pencil" & itemNumber, "Sharpner" & itemNumber}
            Me.DateSold = Date.Parse(String.Format("0{0}/0{0}/0{0}", itemNumber))
        End Sub

    End Class

End Class

Ваш ответ на вопрос