jueves, 15 de octubre de 2009
Totalizar en el pie de GridView ( totals GridView footer)
Seguramente han necesitado totalizar una columna de en un gridview.lo primero es que tiene que hacer el llenado del grid:
Base de datos:
Nortwind
Librerias:
using System.Data;
using System.Data.SqlClient;
Para mostrar el pie de página, tiene que establecer el atributo de ShowFooter="True".
LLENADO:
string sql="SELECT OrderID, ProductID, UnitPrice, Quantity, UnitPrice * Quantity AS total";
sql += " FROM [Order Details]";
sql += " WHERE OrderID=10285";
SqlConnection cn = new SqlConnection(STRINGCN);
SqlDataAdapter da = new SqlDataAdapter(sql, cn);
DataSet ds=new DataSet();
da.Fill(ds, "Details");
GridView1.DataSource = ds.Tables["Details"];
GridView1.DataBind();
tenemos que dimencionar una variable para totalizar: decimal dTotal = 0;
ahora vamos a capturar el evento: RowDataBound
ejemplo completo:
decimal dTotal = 0;
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
dTotal += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "total"));
}
if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[3].Text = "Total:";
e.Row.Cells[4].Text = dTotal.ToString("c");
e.Row.Cells[4].HorizontalAlign = HorizontalAlign.Right;
e.Row.Font.Bold = true;
}
}
Suscribirse a:
Comentarios de la entrada (Atom)
8 comentarios:
para BV seria asi:
dim dTotal As Decimal = 0
Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
dTotal += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "total"))
End If
If e.Row.RowType = DataControlRowType.Footer Then
e.Row.Cells(3).Text = "Total:"
e.Row.Cells(4).Text = dTotal.ToString("c")
e.Row.Cells(4).HorizontalAlign = HorizontalAlign.Right
e.Row.Font.Bold = True
End If
End Sub
----
una consultita ahora si quisiera sumar las columnas agregando otra columna !!!
Muchas gracias por el post me sirvio de mucho.-
gracias, me sirvió el artículo, aunque encontré resolví una manera más fácil de hacerlo para no tener que consultar a la BD el total de la columna.
protected void dg_orden_coniva_RowDataBound(object sender, GridViewRowEventArgs e)
{
if ((e.Row.RowType == DataControlRowType.DataRow))
{
subtotal += Convert.ToInt32(e.Row.Cells[1].Text);
}
if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[0].Text = "Total";
e.Row.Cells[1].Text = Convert.ToString(subtotal);
}
}
Se calcula dentro de la misma grilla el total.
Excelente post, muchas gracias me a servido mucho.
Gracis por el aporte, me sacaste de un apuro.
Gracias, me fue de gran ayuda
Muchas gracias, una consulta y si quisiera exportar esa grilla a un excel, como lo haría para que exporte el pie de pagina también?
muy bueno me sirviooo
Publicar un comentario