none
No se pueden agregar filas mediante programación a la colección de filas de DataGridView cuando el control está enlazado a datos. RRS feed

  • Pregunta

  • Hola intento agregar una fila a un datagridview mediante este codigo:

    DataGridView1.Rows.Add(TxtCodigo.Text, TxtNombreDes.Text, TxtCantidad.Text, TxtPrecio.Text, TxtImporte.Text)

    Pero me sale este error:

    "No se pueden agregar filas mediante programación a la colección de filas de DataGridView cuando el control está enlazado a datos."

    Funcionaba perfecto pero agregue un diseño de crystal report y cree un nuevo dataset y me empezo a aparecer estaleyenda.

    Saludos

    sábado, 22 de septiembre de 2012 16:12

Respuestas

  • "No se pueden agregar filas mediante programación a la colección de filas de DataGridView cuando el control está enlazado a datos."

    si has asignado el DataSource al grid. no puede usar el Rows.Add()

    debes recuperar los datos y agregarlo a este

    Dim dt As DataTable = DirectCast(DataGridView1.DataSource, DataTable)
    
    Dim row As Datarow = dt.NewRow()
    
    'asignas los campos
    
    dt.Rows.Add(row)
    
    DataGridView1.DataSource = dt


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Mauricio Hamak sábado, 22 de septiembre de 2012 17:57
    sábado, 22 de septiembre de 2012 17:38

Todas las respuestas

  • "No se pueden agregar filas mediante programación a la colección de filas de DataGridView cuando el control está enlazado a datos."

    si has asignado el DataSource al grid. no puede usar el Rows.Add()

    debes recuperar los datos y agregarlo a este

    Dim dt As DataTable = DirectCast(DataGridView1.DataSource, DataTable)
    
    Dim row As Datarow = dt.NewRow()
    
    'asignas los campos
    
    dt.Rows.Add(row)
    
    DataGridView1.DataSource = dt


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Mauricio Hamak sábado, 22 de septiembre de 2012 17:57
    sábado, 22 de septiembre de 2012 17:38
  • Hola Leandro, tengo el mismo problema que Mauricio solo que yo realizo un insert, ya que quiero insertar una fila en mitad de un datagridview. Me sale el error "no puedes agregar filas mediante programación a la colección de ....."

    Realizo lo siguiente:

     if (e.KeyCode == Keys.Insert)
                {
                    int linea = lineaalbaranDataGridView.CurrentCell.RowIndex;
                    lineaalbaranDataGridView.Rows.Insert(linea++, 1);
                }
    ¿Hay alguna forma de insertar una fila en mitad, con el dgv conectado a origen de datos?

    martes, 27 de enero de 2015 11:33
  • yo tengo este código para agregar valores al datagridview:

    dt = New DataTable
    sql = "SELECT * FROM catServiciosView where id = " + codServicio
    dt = asignarVariablesConsulta(sql)
    idServicio = codServicio
    nombreServicio = Convert.ToString(dt.Rows(0)("servicio"))
    precioUnitario = CStr(claseServicio.precioServicio(codServicio))
    tasaCambio = obtenerTasaCambioDeLaCaja(idCaja)
    precioUnitarioCordoba = CDbl(precioUnitario) * CDbl(tasaCambio)
    dgvDatos.Rows.Add(idServicio, nombreServicio, FormatNumber(precioUnitarioCordoba, 2))

    Al correrlo me manda este error:

    Información adicional: No se pueden agregar filas mediante programación a la colección de filas de DataGridView cuando el control está enlazado a datos.

    Aunque no entiendo porque ya que en ningún momento asigno nada al datagriview excepto en la última fila.

    Le agrego el siguiente código para que me quede de la siguiente manera

    dt = New DataTable
    sql = "SELECT * FROM catServiciosView where id = " + codServicio
    dt = asignarVariablesConsulta(sql)
    idServicio = codServicio
    nombreServicio = Convert.ToString(dt.Rows(0)("servicio"))
    precioUnitario = CStr(claseServicio.precioServicio(codServicio))
    tasaCambio = obtenerTasaCambioDeLaCaja(idCaja)
    precioUnitarioCordoba = CDbl(precioUnitario) * CDbl(tasaCambio)

    Dim dt2 As DataTable = New DataTable
    dt2 = DirectCast(dgvDatos.DataSource, DataTable)
    Dim row As DataRow = dt.NewRow()
    row("ID") = idServicio
    row("SERVICIO") = nombreServicio
    row("PRECIO C$") = precioUnitarioCordoba
    dt2.Rows.Add(row)
    dgvDatos.DataSource = dt2

    y me manda este error:

    Información adicional: No se puede convertir un objeto de tipo 'System.String' al tipo 'System.Data.DataTable'.

    Espero me puedan ayudar, saludos


    Mario Ruiz Carrillo

    viernes, 25 de enero de 2019 17:49
  • Hola Leandro, que tal; tengo una consulta que es algo parecido a este tema. Tengo un DataGridView (que contiene comboBox) que se llena con datos de la BD, una vez que obtengo los resultados, quiero agregar una nueva fila para ingresar datos en la misma grilla y me da el error: No se pueden agregar filas mediante programación a la colección de filas de DataGridView cuando el control está enlazado a datos , para agregar utilizo un botón simple de Agregar, me parece que el error me da por el combo que hay o por los datos que ya existen obtenidos desde un datasource, agradecería tu gran ayuda.

    Te muestro mas o menos como es mi código:


    Gracias,

    Alexander


    Alexander Daniel Perú

    sábado, 26 de enero de 2019 0:03
  •    if (e.KeyCode == Keys.Insert)
                {

                    GridViewTabla.RowCount++; 
                   
                }
    lunes, 29 de abril de 2019 16:27