it-swarm.com.de

Wie füge ich einem DataGridView in VB.Net Datensätze hinzu?

Wie füge ich einen neuen Datensatz zum DataGridView-Steuerelement in VB.Net hinzu?

Ich verwende kein Dataset oder keine Datenbankbindung. Ich habe ein kleines Formular mit 3 Feldern und wenn der Benutzer auf OK klickt, sollten sie dem DataGridView-Steuerelement als neue Zeile hinzugefügt werden.

13
John

Wenn Sie die Zeile am Ende des Rasters hinzufügen möchten, verwenden Sie die Add () -Methode der Rows-Auflistung ...

DataGridView1.Rows.Add(New String(){Value1, Value2, Value3})

Wenn Sie die Zeile an einer bestimmten Position einfügen möchten, verwenden Sie die Insert () -Methode der Rows-Auflistung (wie GWLlosa auch sagte) ...

DataGridView1.Rows.Insert(rowPosition, New String(){value1, value2, value3})

Ich weiß, dass Sie erwähnt haben, dass Sie keine Datenbindung durchgeführt haben, aber wenn Sie in Ihrem Projekt einen stark typisierten Datensatz mit einer einzigen Datendatei definiert haben, können Sie diesen verwenden und einige gute stark typisierte Methoden verwenden, um dies zu tun, anstatt sich auf die Rastermethoden zu verlassen ...

DataSet1.DataTable.AddRow(1, "John Doe", true)
28
codeConcussion

Ich denke, Sie sollten ein Dataset/Datatable in Code erstellen und das Raster daran binden.

4
Galwegian

Wenn ich versuche, eine Datenquelle aus datagridview zu konvertieren, die eine Bindungsquelle verwendet, kann der Fehler laut nicht konvertiert werden:

----------Lösung------------

'Ich habe das Casting von einer Bindungsquelle geändert, die mit datagridview bindet

'Code hier

Dim dtdata As New DataTable()

dtdata = CType(bndsData.DataSource, DataTable)
2
Mr.Buntha Khin

Die gesuchte Funktion ist "Einfügen". Als Parameter werden der Index, an dem Sie einfügen möchten, und ein Array von Werten verwendet, die für die neuen Zeilenwerte verwendet werden sollen. Die typische Verwendung kann Folgendes umfassen:

myDataGridView.Rows.Insert(4,new object[]{value1,value2,value3});

oder so etwas.

1
GWLlosa

Wenn Ihr DataGridView an ein DataSet gebunden ist, können Sie nicht einfach eine neue Zeile in Ihre DataGridView -Anzeige einfügen. Es wird jetzt richtig funktionieren.

Stattdessen sollten Sie die neue Zeile in das DataSet mit folgendem Code einfügen:

BindingSource[Name].AddNew()

Dieser Code fügt automatisch eine neue Zeile in Ihre DataGridView Anzeige ein.

0
Robert

Wenn Sie etwas verwenden möchten, das aussagekräftiger ist als ein dummes Array, ohne auf ein DataSet zurückzugreifen, kann sich Folgendes als nützlich erweisen. Es ist immer noch nicht stark typisiert, aber es wird zumindest vom Compiler überprüft und kann gut überarbeitet werden.

Dim previousAllowUserToAddRows = dgvHistoricalInfo.AllowUserToAddRows
dgvHistoricalInfo.AllowUserToAddRows = True

Dim newTimeRecord As DataGridViewRow = dgvHistoricalInfo.Rows(dgvHistoricalInfo.NewRowIndex).Clone

With record
    newTimeRecord.Cells(dgvcDate.Index).Value = .Date
    newTimeRecord.Cells(dgvcHours.Index).Value = .Hours
    newTimeRecord.Cells(dgvcRemarks.Index).Value = .Remarks
End With

dgvHistoricalInfo.Rows.Add(newTimeRecord)

dgvHistoricalInfo.AllowUserToAddRows = previousAllowUserToAddRows

Es ist zu beachten, dass der Benutzer die Berechtigung AllowUserToAddRows haben muss, da dies sonst nicht funktioniert. Deshalb speichere ich den vorhandenen Wert, setze ihn auf true, erledige meine Arbeit und setze ihn dann auf den ursprünglichen Wert zurück.

0
cjbarth