C#, Códigos básicos

C# Criar uma célula no footer de um grid com Total; Usando o evento RowDataBound de um Grid e a propriedade e.Row.DataItem para calcular o total

Muitas vezes precisamos calcular o total de um grid. Irei explicar como fazer utilizando a propriedade RowDataBound, de forma que, não é gerado um novo acesso ao banco de dados.

Em primeiro lugar importe o namespace System.Data:

using System.Data;

Em uma variável do tipo decimal chamada _CartTotal iremos incrementar o total através dos valores obtidos na DataRow.

Acesse o evento RowDataBound e siga o código:

decimal _CartTotal = 0;
 //Evento RowDataBound do Grid
 protected void MyGrid_RowDataBound(object sender, GridViewRowEventArgs e)
 {
 if (e.Row.RowType == DataControlRowType.DataRow)
 {
 DataRowView drv = (DataRowView)e.Row.DataItem;
 //strings
 string sUnitCost = drv["UnitCost"].ToString();
 string sQuantity = drv["Quantity"].ToString();
 //decimais
 decimal UnitCost = 0;
 decimal Quantity = 0;
 //Passa os valores e incrementa o total
 if (decimal.TryParse(sUnitCost, out UnitCost) &&
 decimal.TryParse(sQuantity, out Quantity))
 {
 _CartTotal += UnitCost * Quantity;
 }
 }
 else if (e.Row.RowType == DataControlRowType.Footer)
 {
 if (_CartTotal > 0)
 {
 e.Row.Cells[5].Text = "Total: " + _CartTotal.ToString("C");
 }
 }
 }

Foram criadas várias variáveis para tornar mais fácil o acompanhamento do exemplo.

A instrução decimal.TryParse() retorna verdadeiro caso o valor da string possa ser convertido em um decimal. Semelhante a decimal.TryParse(), temos int.TryParse(), double.TryParse()….

Veja como ficou o grid:

Anúncios
Padrão

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s