none
grabar datos de un datagridview RRS feed

  • Pregunta

  •  

    Tengo un gridview en el que se muestran los datos de una tabla mediante la propiedad datasource=myTabla (siendo myTabla un datatable) mi duda es como puedo hacer para permitir que el usuario modifique o agrege datos al datagridview y sean grabados en la tabla de sql. Supongo que habrá que crear un update pero no se como. ¿algun ejemplo?

    Entiendo que se podrá hacer de alguna forma para solo grabar las que hayan sido modificadas o insertadas, en ese caso lo conveniente sería hacer el update en algun evento del datagridview pero tampoco los conozco muy bien.

     

    Saludos y gracias

    martes, 8 de abril de 2008 19:12

Todas las respuestas

  • Hola artza,

     

    Con el objeto dataadapter podrás hacer un update. Algo así:

     

    MiDA.Update(myTabla)

     

    Espero que te sirva, si no especifícanos un poco más como haces para traerte los datos.

     

    Un Saludo

     

    martes, 8 de abril de 2008 20:54
    Moderador
  • Me temo que con eso no me vale, pero muchas gracias, te explico un poco como lo tengo

     

    1.- en el formulario donde esta el grid tengo este sub para cargar los datos al grid

    Private Sub CargaGrid()

    Cursor = System.Windows.Forms.Cursors.WaitCursor

    Dim datos As New dtMaquina

    ' grd.AutoGenerateColumns = False

    grd.DataSource = datos.obtenerRepuestos(registro.Codigo)

    'grd.Columns(0).Visible = False

    'grd.Columns(1).Visible = False

    Dim comboboxColumn As DataGridViewComboBoxColumn

    comboboxColumn = CreateComboBoxColumn()

    comboboxColumn.HeaderText = "Descripción "

    grd.Columns.Remove("nombre")

    grd.Columns.Insert(2, comboboxColumn)

    Cursor = System.Windows.Forms.Cursors.Default

    End Sub

     

    2.- dtMaquina es una clase de enlace a datos donde tengo esta función:

    Public Function obtenerRepuestos(ByVal idMaquina As Integer) As DataTable

    'obtiene los datos de una máquina a partir de su id

    Dim CN As New clConexion

    Dim ds As New DataSet

    Dim tblRepuestos As New DataTable

    Dim daRepuestos As SqlDataAdapter

    Dim sql As String = "select repuestos.codigoArticulo,maquinaRepuesto,descripcion as nombre from repuestos, maquinasrepuestos "

    sql = sql & " where repuestos.codigoArticulo=maquinasrepuestos.codigoarticulo "

    sql = sql & " and maquinarepuesto = " & idMaquina

    sql = sql & " order by descripcion "

    daRepuestos = CN.CrearDataAdapter(sql)

    daRepuestos.Fill(ds, "tRegistro")

    tblRepuestos = ds.Tables("tRegistro")

    CN.Dispose()

    CN = Nothing

    Return tblRepuestos

    End Function

     

    Tendría que crear otra función para grabar los datos en la tabla maquinaRepuestos?? en que evento del grid llamaría a esta función?? Como ya he comentado no creo que es muy logico volver a leer todo y grabar sino solo grabar despues de editar o dar de alta una fila en el grid ¿no??

    si puedes explicarme como hacerlo o pasarme algun ejemplo por favor... por lo menos saber cual es el evento del grid

     

    Gracias

    miércoles, 9 de abril de 2008 6:42