Die Syntax, die Sie verwenden, ist ein bisschen seltsam. Es gibt Überladungen, mit denen Sie eine neue Zeile hinzufügen und gleichzeitig einen Wert festlegen können.
Sie können auch kein String-Array als Feld für eine Zelle definieren. Anstatt eine DataTable zu verwenden, können Sie eine benutzerdefinierte Klasse erstellen und eine Liste an die DataGridView binden. Auf diese Weise können Sie ein zugrunde liegendes Feld haben, das ein Array von Zeichenfolgen ist, und dann über eine öffentliche Eigenschaft verfügen, die sie nach Wunsch formatiert und dann in der DataGridView anzeigt.
Hier ist ein Beispiel dafür, wie dies zu nähern:
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
Was genau geschieht? – ImGreg