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.

Preguntas similare

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.



Respuesta Responder a este mensaje
#2 DuKe
01/09/2006 - 15:39 | Informe spam
Gracias por tu respuesta, lo probare cuanto antes !
pd: ya habia encontrado metodos como .addcopy los cuales no sirven como tu
dices.

"Luis Miguel Blanco" escribió
en el mensaje news:
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.



Respuesta Responder a este mensaje
#3 Luis Miguel Blanco
02/09/2006 - 10:15 | Informe spam
No hay de qué, espero que te funcione para lo que necesitas 8-)
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"DuKe" wrote:

Gracias por tu respuesta, lo probare cuanto antes !
pd: ya habia encontrado metodos como .addcopy los cuales no sirven como tu
dices.

"Luis Miguel Blanco" escribió
en el mensaje news:
> 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.
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida