Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jeff.Jones

Total na GridView

Recommended Posts

Fala Galera ...

 

to tentando colocar um TOTAL no footer da minha grid e coloquei o seguinte codigo q esta espalhado ai pela net:

 

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
	{
		decimal ColumnTotal = 0;

		if (e.Row.RowType == DataControlRowType.DataRow)
		{
			ColumnTotal += Convert.ToDecimal(DataBinder.Eval(e.Row.DataItem, "valorcompra"));
			//ColumnTotal = 3;
		}
		else if (e.Row.RowType == DataControlRowType.Footer)
		{
			e.Row.Cells[4].Text = "Total: "+ String.Format("{0:C}",ColumnTotal);
			e.Row.Font.Bold = true;
		}
	}

Aí beleza a pagina executa normal só que no valor total ele me traz 0,00 ... achei mto estranho e resolvi dar um migué no ASP.NET e falei q o total seria 3 ... e qual foi o resultado ? ... continuou mostrando 0 ... parece que nao esta entrando no IF ... seria pq a coluna na grid onde esta o valor é um template ?

 

Quem puder dar uma força ai ... valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho um formulário que faz o calculo e usando um itemTemplate:

Grid, HTML:

<asp:TemplateField HeaderText="Vl. Total">
                                <EditItemTemplate>
                                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("PR_TOTAL", "{0:n2}") %>'></asp:Label>
                                </EditItemTemplate>
                                <ItemStyle HorizontalAlign="Right" />
                                <HeaderStyle HorizontalAlign="Right" />
                                <ItemTemplate>
                                    <%#GetUnitPriceTot(Decimal.Parse(Eval("PR_TOTAL").ToString())).ToString("N2")%>
                                </ItemTemplate>
                                <FooterTemplate>
                                    <%# GetTotalTot().ToString("N2") %>
                                </FooterTemplate>
                                <FooterStyle HorizontalAlign="Right" />
                            </asp:TemplateField>

O PR_TOTAL é um campo do banco que retorna o valor total por item, o footer esta a totalização de todos os itens, no meu código VB tenho outras duas funções que fazem essas somas:

Function GetUnitPriceTot(ByVal Price As Decimal) As Decimal
		TotalUnitPriceTot += Price
		Return Price
	End Function

	Function GetTotalTot() As Decimal
		AtualizaSaldo()
		Return TotalUnitPriceTot
	End Function

No inicio do seu formulário declares esta variável:

Dim TotalUnitPriceTot As Decimal = 0.0

Espero que ajude...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saquei galera ... pelo jeito então o problema estava mesmo na coluna possui um item template né ... por isso ele nao somava o valor.

 

Agora mais uma coisa q esta pegando, sem querer explorar ... eu deixei a columa como databound mesmo, nao converti ela para template e apliquei a formatação ... {0:c} ... só que a grid não esta trazendo o valor formatado como R$ 400,00, esta trazendo 400,0000 ... mesmo eu colocando a formatação ... {0:n2}, mundando a culture para PT-BR ... alguém sabe pq a GRID nao pega a formatação ?

 

- ps ... quando eu deixei a coluna como databound, a soma q coloquei no GridView1_RowDataBound rolou de boa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Além de colocar qual formatação desejar usar, também precisa setar para “False” a propriedade HtmlEncode da coluna.

De uma olhada nisso...

 

Boa quinte .... show de bola! valeu mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.