none
sumar columnas de gridview y ver totales en footer

    Pregunta

  • Hola a todo el foro, siguiendo un ejemplo que vi por aca y tratando de sumar los valores que me tira la grilla despues de ser cargada por el evento de un boton y sus respectivos filtros, intento sumar la columna y no me realiza la suma me toma el valor por 0 de subtotal, que puedo estar haciendo mal que no me di cuenta? ahi les muestro el codigo. ah cierto, algunos valores de la consulta me tira valores null por eso y necesito esos datos igual por eso le puse NullDisplayText = "0" a la grilla

     protected void GrvVendedores_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            int subtotal =0;

            if ((e.Row.RowType == DataControlRowType.DataRow) && (e.Row.RowType != DataControlRowType.EmptyDataRow))
            {

                subtotal += Convert.ToInt32(e.Row.Cells[1].Text);

            }
            if (e.Row.RowType == DataControlRowType.Footer)
            {
                e.Row.Cells[0].Text = "Totales";

                e.Row.Cells[1].Text = Convert.ToString(subtotal);
            }
           
        }

     

      <asp:GridView ID="GrvVendedores" runat="server" AutoGenerateColumns="False"
                                    BackColor="White" BorderColor="#CC9966" BorderStyle="None"
                                    BorderWidth="1px" onrowdatabound="GrvVendedores_RowDataBound"
                                    CellPadding="1" DataKeyNames="Id_Empleado" DataSourceID="SqlDS_vendedores"
                                    ShowFooter="True"  >
                                    <RowStyle BackColor="White" ForeColor="#330099" />
                                    <Columns>
                                        <asp:BoundField DataField="Id_Empleado" HeaderText="Empleado"
                                            ReadOnly="True" SortExpression="Id_Empleado" />
                                        <asp:BoundField DataField="cant_Contactos" HeaderText="cant_Contactos"
                                            SortExpression="cant_Contactos" NullDisplayText = "0" />
                                        <asp:BoundField DataField="cant_vtas" HeaderText="cant_vtas"
                                            SortExpression="cant_vtas" NullDisplayText = "0"/>
                                        <asp:BoundField DataField="imp_vtas" HeaderText="imp_vtas"
                                            SortExpression="imp_vtas" NullDisplayText = "0"/>
                                        <asp:BoundField DataField="nro_eventos" HeaderText="nro_eventos"
                                            SortExpression="nro_eventos" NullDisplayText = "0"/>
                                    </Columns>
                                    <FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
                                    <PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" />
                                    <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" />
                                    <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" />
                                </asp:GridView>

    miércoles, 12 de octubre de 2011 12:55

Respuestas

  • hola

    es que la variable "subtotal" la defiens dentro del propio evento, lo cual se pierde el valor entre cada interaccion

    podrias probar

    int subtotal =0;

    protected void GrvVendedores_RowDataBound(object sender, GridViewRowEventArgs e)
        {
           
            if ((e.Row.RowType == DataControlRowType.DataRow) && (e.Row.RowType != DataControlRowType.EmptyDataRow))
            {
                subtotal += Convert.ToInt32(e.Row.Cells[1].Text);
            }
            if (e.Row.RowType == DataControlRowType.Footer)
            {
                e.Row.Cells[0].Text = "Totales";

                e.Row.Cells[1].Text = Convert.ToString(subtotal);
            }
           
        }

    o sea define la variable por fuera

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Laura Arevalo miércoles, 12 de octubre de 2011 13:05
    miércoles, 12 de octubre de 2011 13:00

Todas las respuestas

  • hola

    es que la variable "subtotal" la defiens dentro del propio evento, lo cual se pierde el valor entre cada interaccion

    podrias probar

    int subtotal =0;

    protected void GrvVendedores_RowDataBound(object sender, GridViewRowEventArgs e)
        {
           
            if ((e.Row.RowType == DataControlRowType.DataRow) && (e.Row.RowType != DataControlRowType.EmptyDataRow))
            {
                subtotal += Convert.ToInt32(e.Row.Cells[1].Text);
            }
            if (e.Row.RowType == DataControlRowType.Footer)
            {
                e.Row.Cells[0].Text = "Totales";

                e.Row.Cells[1].Text = Convert.ToString(subtotal);
            }
           
        }

    o sea define la variable por fuera

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Laura Arevalo miércoles, 12 de octubre de 2011 13:05
    miércoles, 12 de octubre de 2011 13:00
  • Muchas gracias LEandro ,era esa declaracion lo que estaba mal ,la puse afuera y solucionado
    miércoles, 12 de octubre de 2011 13:06
  • Muchas gracias LEandro ,era esa declaracion lo que estaba mal ,la puse afuera y solucionado

    Leandro, de antemano gracias por tu respuesta, aplique el modelo en un aplicativo que desarrollo en vb.net, funciona muy bien el tema es que cuando tengo index en el gridview y cambio de index devuelve valor 0 el acumulado al pie, como podría mantener el acumulado a travez del recorrido de los index del gridview.

    Saludos

    viernes, 02 de marzo de 2012 17:50
  • Leandro, de antemano gracias por tu respuesta, aplique el modelo en un aplicativo que desarrollo en vb.net, funciona muy bien el tema es que cuando tengo index en el gridview y cambio de index devuelve valor 0 el acumulado al pie, como podría mantener el acumulado a travez del recorrido de los index del gridview.
    viernes, 02 de marzo de 2012 17:52