none
Sumar Columna De Un GridView

    Pregunta

  • Mis Saludos A Toda La Comunidad, E Estado Retirado De Hacer Operaciones Con GridView, Necesito Sumar Toda Una Columna De Un Gridview Y Asignarla A Un Control El Resultado De La Suma (LABEL) Ya Lo E Echo Pero E Perdido El Codigo Y No Recuerdo Como Hacerlo, Solo recuerdo El Foreach Que Recorre El Gridview, Espero Alguien Me Pueda Ayudar, Mis Saludos Espero Haber Sido Claro Solo Una Suma De Una Columna Especifica Es Una Aplicacion Web C#. Gracias

    Sebastian Peralta

    lunes, 04 de marzo de 2013 2:02

Respuestas

  • podrias hacer despues de asignar el DataSource

    int suma= GridView1.Rows.Cast<GridViewRow>().Sum(x=> Convert.ToInt32(x.Cells["nombrecol"].Text))
    
    txtTotal.Text = Convert.ToString(suma);

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    lunes, 04 de marzo de 2013 2:05
  • si es cierto el gridview no eprmite referenciar las columnas por el nombre, debes poner el index de la columna

    Sum(x=> Convert.ToInt32(x.Cells[indexcol].Text))

    es un valor numerico, recuerda que las columnas empiezan a contar en cero


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    lunes, 04 de marzo de 2013 13:30
  • Que Es Esa X?

    x es el nombre que le di a la variable que tomara el valor de cada item dentro de la expresion lambda

    x tomara el valor de cada row del grid

    use x pero se podria ahber usado cualquier otro nombre

    El Codigo Me Da Error El Row Dice Algo Como Que System.Web.UI.WebControls.GridViewRow No Contiene Una Definicion Row

    si creo que Row esta de mas

    Sum(x=> Convert.ToInt32(x.Cells["nombrecol"].Text))

    con solo Cells directo alcanza

    editeo el ejemplo que puse anteriormente

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    lunes, 04 de marzo de 2013 3:55

Todas las respuestas

  • podrias hacer despues de asignar el DataSource

    int suma= GridView1.Rows.Cast<GridViewRow>().Sum(x=> Convert.ToInt32(x.Cells["nombrecol"].Text))
    
    txtTotal.Text = Convert.ToString(suma);

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    lunes, 04 de marzo de 2013 2:05
  • No Habia Usado Un Codigo Asi Pero Lo Veo Muy Eficaz Solo Tengo Unas Consultas Que Es Esa X?

    A Que Corresponde, y Lo Otro Es Que El Codigo Me Da Error El Row Dice Algo Como Que System.Web.UI.WebControls.GridViewRow No Contiene Una Definicion Row, Muchas Gracias Por El Codigo Y Su Explicacion Don Leandro 


    Sebastian Peralta

    lunes, 04 de marzo de 2013 2:28
  • Que Es Esa X?

    x es el nombre que le di a la variable que tomara el valor de cada item dentro de la expresion lambda

    x tomara el valor de cada row del grid

    use x pero se podria ahber usado cualquier otro nombre

    El Codigo Me Da Error El Row Dice Algo Como Que System.Web.UI.WebControls.GridViewRow No Contiene Una Definicion Row

    si creo que Row esta de mas

    Sum(x=> Convert.ToInt32(x.Cells["nombrecol"].Text))

    con solo Cells directo alcanza

    editeo el ejemplo que puse anteriormente

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    lunes, 04 de marzo de 2013 3:55
  • Don Leandro si cambio el codigo me arroja error todo esto x.Cells["nombrecol"] y me dice que Error:

    La mejor coincidencia de método sobrecargado para 'System.Web.UI.WebControls.TableCellCollection.this[int]' tiene algunos argumentos no válidos,

    Disculpe pero nose como resolverlo mas con un codigo que no conozco muchas gracias por sus repuestas.


    Sebastian Peralta

    lunes, 04 de marzo de 2013 13:12
  • si es cierto el gridview no eprmite referenciar las columnas por el nombre, debes poner el index de la columna

    Sum(x=> Convert.ToInt32(x.Cells[indexcol].Text))

    es un valor numerico, recuerda que las columnas empiezan a contar en cero


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    lunes, 04 de marzo de 2013 13:30
  • Muchisimas Gracias Don Leandro Me Funciono A La Perfeccion Una Vez Mas Me A Solucionado Un Problema Gracias !!!

    Solucion:

    double suma= GridView1.Rows.Cast<GridViewRow>().Sum(x=> Convert.Double(x.Cells[1].Text));
    lbl_Total.Text = Convert.ToString(suma);


    Sebastian Peralta

    lunes, 04 de marzo de 2013 13:44
  • Buen dia.

    Funciona muy bien el codigo pero que pasa si la columna tiene un templatefield con un cuadro de texto??

    Me trae los valores en vacio es decir "" 

    Como puedo acceder al texto que esta dentro del textBox dentro de mi celda??

    Espero me puedan ayudar a resolver esa duda.

    Gracias de antemano.

    Saludos.

    viernes, 10 de enero de 2014 17:14