none
Sumatoria de una celda de un datagrid en C# RRS feed

  • Pregunta

  • Buenas, como podria hacer una sumatoria de una celda de un datagrid mediante un boton y mostrar el resultado en un textBox, la sumatoria es para n elementos, creo que se hace con un foreach, pero no se como hacerlo, es para la celda de total.

    imagen: http://imgur.com/a/auYfm

    espero me puedan ayudar, gracias.


    • Editado pw75 lunes, 7 de noviembre de 2016 2:08
    lunes, 7 de noviembre de 2016 1:29

Respuestas

  • Hola pw75,

    Puedes ayudarte con Linq de una manera sencilla.

    private void btnCalcular_Click(object sender, EventArgs e)
    {
        double total = dataGridView1.Rows.OfType<DataGridViewRow>().
                                Sum(x => Convert.ToDouble(x.Cells["total"].Value));
    
        txtTotal.Text = total.ToString("N2");
    }

    El "N2" es opcional, solo aplica un formato numérico con 2 decimales.

    Solo tienes que usar el using : using System.Linq;

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta pw75 lunes, 7 de noviembre de 2016 4:55
    lunes, 7 de noviembre de 2016 3:45
  • Hola pw75,

    El error es bastante claro, al parecer no existe ninguna columna con el nombre 'total', ten en cuenta que es distinto el nombre de la columna (Name) y el texto del encabezado (HeaderText).

    Según la posición sería :

    Sum(x => Convert.ToDouble(x.Cells[7].Value));

    Sino podrías obtener el nombre :

     MessageBox.Show(dataGridView1.Columns[7].Name);

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta pw75 lunes, 7 de noviembre de 2016 4:55
    lunes, 7 de noviembre de 2016 4:50

Todas las respuestas

  • Hola pw75,

    Puedes ayudarte con Linq de una manera sencilla.

    private void btnCalcular_Click(object sender, EventArgs e)
    {
        double total = dataGridView1.Rows.OfType<DataGridViewRow>().
                                Sum(x => Convert.ToDouble(x.Cells["total"].Value));
    
        txtTotal.Text = total.ToString("N2");
    }

    El "N2" es opcional, solo aplica un formato numérico con 2 decimales.

    Solo tienes que usar el using : using System.Linq;

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta pw75 lunes, 7 de noviembre de 2016 4:55
    lunes, 7 de noviembre de 2016 3:45
  • Hola Joel C,

    Ya estuve implementando el código que me mandaste, pero me bota error en esta parte del código

    imagen:http://imgur.com/a/5AKvs

    de antemano gracias por la ayuda.

    lunes, 7 de noviembre de 2016 4:32
  • Hola pw75,

    El error es bastante claro, al parecer no existe ninguna columna con el nombre 'total', ten en cuenta que es distinto el nombre de la columna (Name) y el texto del encabezado (HeaderText).

    Según la posición sería :

    Sum(x => Convert.ToDouble(x.Cells[7].Value));

    Sino podrías obtener el nombre :

     MessageBox.Show(dataGridView1.Columns[7].Name);

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta pw75 lunes, 7 de noviembre de 2016 4:55
    lunes, 7 de noviembre de 2016 4:50