Ir para conteúdo

Arquivado

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

Lab Design

Totalizar o gridview

Recommended Posts

Galera é o seguinte, eu baixei um código na net pra totalizar o gridview.

O codigo funciona perfeitamente para inclusão e exclusão, nao testei para edição pois como estou com a tela muito reduzida e preferi que o usuario repita o codigo do produto com a nova quantidade. São somente estes campos que ele deve preencher e se eu abrir o select da linha a tela sai fora do layout.

abaixo o grid que estou usando com a chamada OnRowDataBound e seu datasource.

 

 

<asp:GridView ID="GrdPedidoItens"

DataSourceID="srcEditPedido"

DataKeyNames="numreg"

AutoGenerateColumns="False"

GridLines="None"

CssClass="grid"

width="480"

Style="background-color: #6699cc; font-weight: bolder; color: white"

runat="server" ShowFooter="true"

OnRowDataBound="grdPedidoItens_RowDataBound">

<Columns>

<asp:BoundField DataField="numcat" HeaderText="Código" ReadOnly="true"/>

<asp:BoundField DataField="descricao" HeaderText="Descrição" ItemStyle-HorizontalAlign="Left" ReadOnly="true"/>

<asp:BoundField DataField="modelo" HeaderText="Mod." ReadOnly="true"/>

<asp:BoundField DataField="quant" HeaderText="Quant" ItemStyle-HorizontalAlign="Center" ReadOnly="true"/>

<asp:BoundField DataField="preco" HeaderText="Preço" ItemStyle-HorizontalAlign="Right" ControlStyle-CssClass="edValores"/>

<asp:BoundField DataField="total" HeaderText="Total R$" ItemStyle-HorizontalAlign="Right" ReadOnly="true"/>

<asp:TemplateField>

<ItemTemplate>

<asp:LinkButton ID="btnDel" Text="<img src='Images/delete.png' border='0'>" CommandName="Delete" runat="server"

OnClientClick="return confirm('Você tem certeza ?');" />

</ItemTemplate>

</asp:TemplateField>

</Columns>

 

<FooterStyle BackColor="#60c660" ForeColor="white" HorizontalAlign="Center" Wrap="false"/>

<RowStyle BackColor="#D9F4D8" ForeColor="Black" />

<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />

<PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />

<HeaderStyle BackColor="#006666" Font-Bold="True" ForeColor="#F7F7F7" />

<AlternatingRowStyle BackColor="White" />

</asp:GridView>

 

<asp:ObjectDataSource ID="srcEditPedido" TypeName="Ridgid.Pedidos" SelectMethod="SelectItens"

UpdateMethod="Update" runat="server" DeleteMethod="Delete" OnDeleted="grdPedidoItens_Deleted">

 

<SelectParameters>

<asp:SessionParameter Name="idPedido" SessionField="pedId" Type="Int32" />

</SelectParameters>

</asp:ObjectDataSource>

agora o script que baixei:

protected void grdPedidoItens_RowDataBound(object sender, GridViewRowEventArgs e)

{

if (e.Row.RowType == DataControlRowType.DataRow)

{

this._valorTotal += Convert.ToDouble(e.Row.Cells[5].Text);

this._quantTotal += Convert.ToInt32(e.Row.Cells[3].Text);

}

else if (e.Row.RowType == DataControlRowType.Footer)

{

e.Row.Cells[2].Text = "<div style='float:right'>Ítens: </div>";

e.Row.Cells[3].Text = "<b style='color:red'>" + this._quantTotal.ToString().PadLeft(4, '0') + "</b>";

e.Row.Cells[4].Text = "<div style='float:right'>Total: </div>";

e.Row.Cells[5].Text = "<div style='float:right'><b style='color:red'>" + this._valorTotal.ToString("F") + "</b></div>";

}

}

 

// este eu inclui por minha conta. as var _valorTotal e _quantTotal são criadas no inicio do code-behind

protected void grdPedidoItens_Deleted(object sender, ObjectDataSourceStatusEventArgs e)

{

_valorTotal = 0; // força total pra 0

_quantTotal = 0; // força total pra 0

}

Espero que essa dica ajude

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi quintelab, a princípio era um problema na totalização quando se removia algum registro mas enquanto estava fazendo o post eu descobri o que tinha feito de errado e o script passou a funcionar corretamente.

 

Pode transferir pra dicas por favor.

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.