none
Problema al cargar el datagridview RRS feed

  • Pregunta

  • Mil Gracias por el soporte

    Estoy trabajando con el formulario anterior para darle ingreso a algunos productos al almacen. El tema esta que cada vez que le doy ingreso a un nuevo serial se me crea una linea adicional que no logro eliminar. Podria alguien darme una luz por favor

    Estoy usando la siguiente function para agregar los datos al formulario:

       

    PrivateSubtxtSerialNumber_TextChanged(sender AsObject, e AsEventArgs) HandlestxtSerialNumber.TextChanged

            nro = nro + 1

            DGBatch.Rows.Add(nro, txtSerialNumber.Text)

            txtSerialNumber.Text =

    ""


            txtSerialNumber.Focus()

       

    EndSub


    MB



    lunes, 30 de septiembre de 2019 20:58

Respuestas

  • Hola:
    En un Form como el de la imagen

    Copia y pega el siguiente codigo

    Option Explicit On
    Option Strict On
    Public Class Form1
        Private moDatatable As New DataTable()
        Private Numero As Integer
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            DataGridView1.AllowUserToAddRows = False
            'Añadimos las columnas.
            moDatatable.Columns.Add(New DataColumn("Numero", Type.GetType("System.Int16")))
            moDatatable.Columns.Add(New DataColumn("Serial", Type.GetType("System.String")))
            Me.DataGridView1.DataSource = moDatatable
        End Sub

        Private Sub btnAñadir_Click(sender As Object, e As EventArgs) Handles btnAñadir.Click
            Numero += 1
            Dim lDataRow As DataRow = moDatatable.NewRow
            ' Añadimos los datos
            lDataRow.Item("Numero") = Numero
            lDataRow.Item("Serial") = Me.txtSerial.Text
            ' Agregamos el registros a la colección Rows
            moDatatable.Rows.Add(lDataRow)
            Me.txtSerial.Text = ""
            Me.txtSerial.Focus()
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos
    • Propuesto como respuesta Pablo Rubio miércoles, 2 de octubre de 2019 18:14
    • Marcado como respuesta Marcos Bolivar jueves, 3 de octubre de 2019 2:24
    miércoles, 2 de octubre de 2019 8:57
  • Gracias Marcelo..

    Era el valor de vacio lo cambie por seleccionar todo. selectAll y funciona


    MB

    • Marcado como respuesta Marcos Bolivar jueves, 3 de octubre de 2019 2:24
    jueves, 3 de octubre de 2019 2:24

Todas las respuestas

  • Hola Marcos, podrías agregar algo de tú código como para ver por donde analizar, y expicar a que te rerieres con Línea Adicional, si el caso es que se genera un nuevo Rown y tu ingresas datos solo por código puedes optar por DGV.AllUserAddRown = False, pero no me queda claro si ese es el caso

    Saludos


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗

    • Propuesto como respuesta Pablo Rubio miércoles, 2 de octubre de 2019 18:13
    lunes, 30 de septiembre de 2019 21:24
  • Gracias por el apoyo alli agregue el procedimiento que estoy usando. Se supone que el usuario debe ingresar datos con un scanner y alli cargarlos al DG pero este me esta creando una linea adicional.

    Alli estoy usando una sentencia que tenia en ram. pero es lo mismo. por ejemplo me carga la linea 1 y luego la linea 3. Se supone que deberia cargar corrido ej: 1,2,3,4,5,6,7,8.

    PD: no te preocupes por el format de la columna Quantity


    MB


    lunes, 30 de septiembre de 2019 21:30
  • Lo sigo viendo pero, a primera vista el Changed del text debería ejecutar dos veces según el código, pirmero ejecuta cuando el usuario entra (por el metodo que sea) un nuevo valor al text, pero dentro de el Changed vuelves a modificar el text .....  txtSerialNumber.Text =  .... no se con que valor pero ya sea por dejarlo vacío  ("") el evento volverá a ejecutar y obviamente cargara un rown sin datos, es lo que veo por el momento, analizaló y comentas

    Saludos


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗

    lunes, 30 de septiembre de 2019 23:12
  • Hola:
    En un Form como el de la imagen

    Copia y pega el siguiente codigo

    Option Explicit On
    Option Strict On
    Public Class Form1
        Private moDatatable As New DataTable()
        Private Numero As Integer
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            DataGridView1.AllowUserToAddRows = False
            'Añadimos las columnas.
            moDatatable.Columns.Add(New DataColumn("Numero", Type.GetType("System.Int16")))
            moDatatable.Columns.Add(New DataColumn("Serial", Type.GetType("System.String")))
            Me.DataGridView1.DataSource = moDatatable
        End Sub

        Private Sub btnAñadir_Click(sender As Object, e As EventArgs) Handles btnAñadir.Click
            Numero += 1
            Dim lDataRow As DataRow = moDatatable.NewRow
            ' Añadimos los datos
            lDataRow.Item("Numero") = Numero
            lDataRow.Item("Serial") = Me.txtSerial.Text
            ' Agregamos el registros a la colección Rows
            moDatatable.Rows.Add(lDataRow)
            Me.txtSerial.Text = ""
            Me.txtSerial.Focus()
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos
    • Propuesto como respuesta Pablo Rubio miércoles, 2 de octubre de 2019 18:14
    • Marcado como respuesta Marcos Bolivar jueves, 3 de octubre de 2019 2:24
    miércoles, 2 de octubre de 2019 8:57
  • Gracias Marcelo..

    Era el valor de vacio lo cambie por seleccionar todo. selectAll y funciona


    MB

    • Marcado como respuesta Marcos Bolivar jueves, 3 de octubre de 2019 2:24
    jueves, 3 de octubre de 2019 2:24
  • De nada Marcos, me alegra que se solucione, otra opción que tienes si no quieres usar Changed usa el evento KeyDown y captura el tecla enter If e.KeyCode = KeysEnter  Then ......() enotnes el usuario escribe el código y al dar entre en el mismo TextBox ejecuta el código de ingreso. Es algo más rápido

    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗

    jueves, 3 de octubre de 2019 4:14