una - ¿Cómo agrego registros a DataGridView en VB.Net?
propiedades de datagridview (6)
¿Cómo agrego un nuevo registro al control DataGridView en VB.Net?
No uso el conjunto de datos ni el enlace de la base de datos. Tengo un formulario pequeño con 3 campos y cuando el usuario hace clic en Aceptar, se deben agregar al control DataGridView como una nueva fila.
Creo que deberías construir un conjunto de datos / tabla de datos en el código y unir la grilla a eso.
Si desea agregar la fila al final de la cuadrícula, use el método Add () de la colección Filas ...
DataGridView1.Rows.Add(New String(){Value1, Value2, Value3})
Si desea insertar la fila en una posición particular, utilice el método Insertar () de la colección Filas (como también dijo GWLlosa) ...
DataGridView1.Rows.Insert(rowPosition, New String(){value1, value2, value3})
Sé que mencionó que no estaba haciendo un enlace de datos, pero si definió un conjunto de datos fuertemente tipado con una única tabla de datos en su proyecto, podría usarlo y obtener algunos buenos métodos fuertemente tipados para hacer esto en lugar de confiar en los métodos de cuadrícula ...
DataSet1.DataTable.AddRow(1, "John Doe", true)
Cuando trato de convertir el origen de datos de datagridview que usa bindingsource, el error accor no puede convertirse:
----------Solución------------
''Cambié el casting de bindingsource que se vincula con datagridview
''Código aquí
Dim dtdata As New DataTable()
dtdata = CType(bndsData.DataSource, DataTable)
La función que estás buscando es ''Insertar''. Toma como parámetros el índice en el que desea insertar, y una matriz de valores para usar para los nuevos valores de fila. El uso típico puede incluir:
myDataGridView.Rows.Insert(4,new object[]{value1,value2,value3});
O algo por el estilo.
Si desea utilizar algo que sea más descriptivo que una matriz tonta sin recurrir al uso de un DataSet, lo siguiente puede resultar útil. Todavía no está fuertemente tipado, pero al menos es verificado por el compilador y será procesado bastante bien.
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
Vale la pena señalar que el usuario debe tener el permiso AllowUserToAddRows
o esto no funcionará. Es por eso que almaceno el valor existente, lo configuro en verdadero, hago mi trabajo y luego lo reinicio a cómo era.
Si su DataGridView
está vinculado a un DataSet
, no puede simplemente agregar una nueva fila en su pantalla DataGridView
. Ahora funcionará correctamente.
En su lugar, debe agregar la nueva fila en el DataSet
con este código:
BindingSource[Name].AddNew()
Este código también agregará automáticamente una nueva fila en su pantalla DataGridView
.