none
añadir fila a grid RRS feed

  • Pregunta

  • buenos días,

    tengo este código:

    SqlConnection MiConexion = new SqlConnection(Settings.Default.INTERMACHOConnectionString1);
                MiConexion.Open();
                SqlCommand cmd = MiConexion.CreateCommand();
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "Select Orden as ORDEN, CodMaterial ..........

                DataTable dt = new DataTable();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
                dgvPartesPedidos.DataSource = dt;

    al pulsar un botón se añaden a este grid las lineas seleccionadas desde otro grid (código):

    private void button3_Click(object sender, EventArgs e)
            {
                foreach (DataGridViewRow row in dgvPartesPasados.SelectedRows)
                { 

           dgvPartesPedidos.Rows.Add(row.Cells["ORDEN"].Value, row.Cells["REFERENCIA"].Value, row.Cells["DESCRIPCION"].Value);
             dgvPartesPasados.Rows.Remove(row);

    }

    }

    pero me da el famoso error que no puedo insertar si el grid proviene de una fuente de datos,

    he visto en el foro que Leandro lo ha aclarado en visual basic pero no lo tengo claro en c#,

    me podríais decir cómo solucionarlo, gracias



    • Editado Equipoc viernes, 16 de junio de 2017 12:13
    viernes, 16 de junio de 2017 11:58

Todas las respuestas

  • Saludos.

    Tienes que agregarlo al DT.

    Ejemplo Debes llenar el Grid1 y luego con un foreach recorrer el Grid2 y vas agregando al DT los nuevos datos, y finalmente cargas de nuevo el Grid1 con los datos de DT:

    EJ:

            private void button1_Click(object sender, EventArgs e)
            {
                DataTable DT = null;
    //Agregamos al DT lo que llega de la BD
    
    
                dataGridView1.DataSource = DT;
                foreach (DataGridViewRow item in dataGridView2.Rows)
                {
                    DT.Rows.Add(item.Cells["Orden"].Value.ToString(), item.Cells["fecha"].Value.ToString());
                }
                dataGridView1.DataSource = DT;
    
            }

    viernes, 16 de junio de 2017 13:13
  • Hola Equipoc,

    ¿Tu control dgvPartesPasados (El DGV de donde vas a pasar las filas) también está enlazado a datos, es decir asignas un valor a la propiedad DataSource?

    En caso sea correcto, solo debes recuperar los DataRow y para pasarlo al otro DataGridView tendrías primero que obtener el DataTable y luego importar la fila usando ImportRow.

    Método DataTable.ImportRow (DataRow)

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 16 de junio de 2017 14:21
  • no está enlazado, recojo los datos de la linea seleccionada y los paso al 2º grid, borrándolo despues del 1º.
    lunes, 19 de junio de 2017 5:54
  • Jose Fernando, gracias por tu respuesta, no me admite item.cells
    lunes, 19 de junio de 2017 6:07
  • Como estás recorriendo el Foreach?.

                foreach (DataGridViewRow item in dataGridView2.Rows)
                {
                    DT.Rows.Add(item.Cells["Orden"].Value.ToString(), item.Cells["fecha"].Value.ToString());
                }

    Recuerda.

    foreach -> Es el Bucle.

    DataGridViewRows -> Es lo que vas a recorrer.

    item -> Es un nombre X que le asignas para trabajar con ella.

    datagridview2.Rows -> Hace referencia a que vas a recorrer las filas del datagridview por eso debe ir DataGridViewRows en la primera parte del foreach.

    Debes validar que lo que estas recorriendo si sea un DataGridView y no Un dataTable por que obviamente cambia la forma en como recores y como haces la llamada.

    Saludos.

    Acá ya se habia nombrado ese problema, checate para que salgas de dudas.

    Recorrer un DataGridView

    martes, 20 de junio de 2017 13:25