Como duplicar una fila de un datagridview para crear una nueva?

31/08/2006 - 03:32 por DuKe | Informe spam
Hola.

Tengo un datagridview enlazado, pues bien, como lo puedo hacer para que
cuando el usuario presione un boton, la fila selecciona sirva para generar
una nueva fila, usando los mismos datos de la fila seleccionada?

En resumen, duplicar la fila seleccionada.

Como lo hago?
Gracias.
 

Leer las respuestas

#1 Luis Miguel Blanco
31/08/2006 - 08:14 | Informe spam
Hola Duke

Un datagridview enlazado a datos no te permite copiar directamente sus filas
mediante su colección Rows, por lo que debes emplear el dataset subyacente
que utiliza el grid para manejar los datos.

Una técnica que podrías usar sería emplear el evento RowEnter del
datagridview para saber en todo momento el índice de fila en el que estás
posicionado. A partir de esta información, cuando pulses por ejemplo un botón
del formulario, utilizando el valor de ese índice de fila, obtienes de la
tabla del dataset la fila que se está visualizando en el grid y que quieres
duplicar, y mediante el método NewRow() del objeto datatable, creas una fila
nueva, la cual será la que dupliquemos usando la propiedad ItemArray. Te
acompaño a continuación un ejemplo de código para que lo pruebes:

'///////////////////////////////////////
Public Class Form1
Dim oDataAdapter As SqlDataAdapter
Dim oDataSet As DataSet
Dim nFilaActual As Integer

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim oConexion As SqlConnection
oConexion = New SqlConnection()
oConexion.ConnectionString = "Data Source=localhost;" & _
"Initial Catalog=NorthwindBIS;" & _
"User ID=sa;Password3sa456"

Dim oComando As SqlCommand
oComando = New SqlCommand("SELECT * FROM Suppliers", oConexion)
oDataAdapter = New SqlDataAdapter(oComando)
Dim oCommandBuilder As SqlCommandBuilder
oCommandBuilder = New SqlCommandBuilder(oDataAdapter)
oDataSet = New DataSet()
oDataAdapter.Fill(oDataSet, "Suppliers")

Me.grdSuppliers.DataSource = oDataSet
Me.grdSuppliers.DataMember = "Suppliers"
End Sub

Private Sub btnAgregarFila_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnAgregarFila.Click
' obtener la fila de la tabla del dataset
Dim oFila As DataRow = oDataSet.Tables(0).Rows(nFilaActual)
' crear una fila nueva de la tabla
Dim oFilaNueva As DataRow = oDataSet.Tables(0).NewRow()
' traspasar los valores de la fila actual a la nueva
oFilaNueva.ItemArray = oFila.ItemArray
' añadir la fila nueva a la tabla del dataset
oDataSet.Tables(0).Rows.Add(oFilaNueva)
End Sub

' obtener el índice de la fila en que acabamos de entrar
Private Sub grdSuppliers_RowEnter(ByVal sender As System.Object, ByVal e
As System.Windows.Forms.DataGridViewCellEventArgs) Handles
grdSuppliers.RowEnter
nFilaActual = e.RowIndex
End Sub
End Class
'///////////////////////////////////////

Espero que con esto lo puedas resolver.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"DuKe" wrote:

Hola.

Tengo un datagridview enlazado, pues bien, como lo puedo hacer para que
cuando el usuario presione un boton, la fila selecciona sirva para generar
una nueva fila, usando los mismos datos de la fila seleccionada?

En resumen, duplicar la fila seleccionada.

Como lo hago?
Gracias.



Preguntas similares