none
LLenar un datagrid sin quitar los registros existentes RRS feed

  • Pregunta

  • Hola, que tal!

    Tengo una duda, miren tengo un datagri que se llena con un datatable y me funciona, pero al darle nuevamente la instruccion de buscar un producto y agregarlo al datagrid, este se refresca y empiesa como si fuera la primera vez

    Lo que quiero y estoy haciendo es un sistema de ventas, quiero que me sume el producto y el precio al datagrid pero con los regitros ya existentes en el. Espero y explicarme

    Gracias

    aqui dejo el codigo :

    Dim con As New SqlConnection("Data Source=KUNO-LAP;User ID=sa;Password=incubus91")
                Dim comando As New SqlCommand
                Dim datos As New DataTable
                Dim adaptador As New SqlDataAdapter
                Try
                    con.Open()
                    comando.Connection = con
                    comando.CommandType = CommandType.Text
                    comando.CommandText = "SELECT descripcion,precio FROM producto WHERE idproducto = @idproducto"
                    comando.Parameters.Add(New SqlParameter("@idproducto", txtsku.Text))
                    adaptador.SelectCommand = comando
                    adaptador.Fill(datos)

                    If datos.Rows.Count > 0 Then
                        dgventa.DataSource = datos
                        dgventa.Columns(0).HeaderText = "Producto :"
                        dgventa.Columns(1).HeaderText = "Prrecio :"
                    Else
                        dgventa.DataSource = Nothing
                        MsgBox("Los datos no se encuentran en la base ")
                    End If
                    Me.dgventa.DataSource = datos
                    Me.dgventa.Enabled = False

                Catch ex As SqlException
                    MsgBox("Error al mostrar los datos" & ex.Message, MsgBoxStyle.Information)
                Finally
                    con.Close()
                End Try
            End If

    jueves, 20 de junio de 2013 1:29

Todas las respuestas

  • hola

    pero al darle nuevamente la instruccion de buscar un producto y agregarlo al datagrid, este se refresca y empiesa como si fuera la primera vez

    en que evento estas realizando esta accion? porque recuerda que si usas el Page_Load para cargar el grid debes ponerlo dentro del

    If Not IsPostBack Then

       'aqui cargas el grid

    End If

    sino lo pones dentro del if en cada accion del boton se recargara nuevamente  y perderas lo que hayas agregado

    ---

    ademas recuerda que si pones items de forma dinamica, los datos debes conservarlos en un objeto Session

    ya que las variables en un entorno web no conservan estado

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Propuesto como respuesta Sergio Parra jueves, 20 de junio de 2013 11:20
    jueves, 20 de junio de 2013 10:50
  • Lo que veo superficialmente, es que siempre que haces una consulta le cambias el datasource al

    grid, creo que deberías validar si el grid tiene filas con un if.

    si no las tiene asignales el datasource, pero si las tienes deberías usar el método datagrid.rows.add(tufila, o matriz de datos de la fila).

    Claro que en general con el agregar la fila con el metodo datagrid.rows.add, te ahorrarías el if.

    Aunque no tengo mucha experiencia en desarrollo web, creo esto deberia funcionar para vos.

    Espero haber ayudado, cualquier cosa a la orden

    jueves, 20 de junio de 2013 13:02
  • algo que se me paso preguntar, que tipo de aplicacion estas desarrollando ? es web o desktop

    igualmente la respuesta seria similar, ya que en ambos tipo de entornos si quieres agregar registros cuando esta vinculado a datos lo haces en el origen de datos y no en el control directamente

    si usas un datatable entonces agregas el nuevo registro en este

    Dim dt As DataTable = TryCast(DataGridView1.DataSource, DataTable)
    
    Dim row As DataRow = dt.NewRow()
    row("campo1") = valor
    dt.Rows.Add(row)
    
    DataGridView1.DataSource = dt

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 20 de junio de 2013 13:34