none
EntityDataSource y Gridview - Total de todas las páginas. RRS feed

  • Pregunta

  • Hola:

    En una aplicación web estoy utilizando el control Entitydatasource y visualizando los datos en un gridview.

    El problema que tengo es que en el pie del gridview tengo puesto un totalizador, pero solamente me pone el total de la página y no he podido poner el total de la suma de todas las páginas. No se si a través del control entitydatasource se puede obtener el total de todos los registros.

    El código del total que tengo actualmente es el siguiente:

            decimal _totalFacturas = 0m;
            decimal _totalCobrado = 0m;
          
            protected void gvFacturas_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    Label strRetorno = (Label)e.Row.FindControl("lblTotal");
                    _totalFacturas +=  Convert.ToDecimal(strRetorno.Text);
    
                    Label strCobrado = (Label)e.Row.FindControl("lblCobrado");
                    _totalCobrado += Convert.ToDecimal(strCobrado.Text);
                }
                else if (e.Row.RowType == DataControlRowType.Footer)
                {
                    
                    // Display the summary data in the appropriate cells
                    e.Row.Cells[10].Text = "Total: " + _totalFacturas.ToString("c");
                    e.Row.Cells[11].Text = "Total: " + _totalCobrado.ToString("c");
                   
                }
            }

    Entonces lo que me falta es poder sacar el total de todos los registro del gridview.

    Un Saludo.

    sábado, 30 de mayo de 2015 17:35

Respuestas

  • Fíjate que con el código que has escrito no estás sacando los totales del EntityDatasource, sino que los estás sacando de las líneas que hay en el grid. Por lo tanto, solo salen los totales de la página actual, con independencia de que el EntityDatasource sea capaz de obtener más informacion.

    Yo sugeriría calcular los totales directamente en código, usando una consulta contra el mismo ObjectDatasource que ya debes tener definido en el programa para que lo use el EntityDatasource.

    using (miContexto db = new miContexto())
    {
       totalLaColumna = (from r in db.MiTabla select r.LaColumna).sum();
       //...
    }

    • Marcado como respuesta elturle sábado, 30 de mayo de 2015 20:49
    sábado, 30 de mayo de 2015 17:58

Todas las respuestas

  • Fíjate que con el código que has escrito no estás sacando los totales del EntityDatasource, sino que los estás sacando de las líneas que hay en el grid. Por lo tanto, solo salen los totales de la página actual, con independencia de que el EntityDatasource sea capaz de obtener más informacion.

    Yo sugeriría calcular los totales directamente en código, usando una consulta contra el mismo ObjectDatasource que ya debes tener definido en el programa para que lo use el EntityDatasource.

    using (miContexto db = new miContexto())
    {
       totalLaColumna = (from r in db.MiTabla select r.LaColumna).sum();
       //...
    }

    • Marcado como respuesta elturle sábado, 30 de mayo de 2015 20:49
    sábado, 30 de mayo de 2015 17:58
  • Muchas Gracias.

    Lo he hecho como dices y funciona bien.

    Pensaba que se podría hacer con el control entitydatasourde.

    Un Saludo.

    sábado, 30 de mayo de 2015 20:50