Repeater - Somar valores no FooterTemplate

215 views
Skip to first unread message

Joao Carlos Silvério

unread,
Jul 29, 2009, 10:28:21 AM7/29/09
to dotn...@googlegroups.com
Galera,

Tenho um repeater que lista os produtos de um pedido. Esta lista contém várias informações do produto, inclusive o valor.

Gostaria de somar os valores de todos os produtos na <FooterTemplate> (rodapé do Repeater).

Para isto utilizei o seguinte, porém ocorre o erro: Referência de objeto não definida para uma instância de um objeto. na linha em negrito abaixo.

Obs.
  • ProdutoInfo é uma classe de Objeto que contém as propriedades referente o produto, dentre elas o valor do produto
  • lblTotalValor é um Label que foi criado na <FooterTemplate>


Protected Sub rptProdutos_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptProdutos.ItemDataBound

        If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem) Then

            Dim objProduto As ProdutoInfo = e.Item.DataItem
            totalValor = totalValor + objProduto.Valor

        ElseIf e.Item.ItemType = ListItemType.Footer Then
           
            Dim lbl As Label = e.Item.FindControl("lblTotalValor")
            lbl.Text = totalValor

        End If

    End Sub


 

Atenciosamente,

 

João Carlos Silvério

Cel.: (31) 8881-8883



Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 - Celebridades - Música - Esportes

Hendrik Araujo

unread,
Jul 29, 2009, 10:49:29 AM7/29/09
to dotn...@googlegroups.com
Tenta criar o objeto e adicionar no item

Dim lbl As New Label
lbl.Text = totalValor
e.Item.Controls.Add(lbl)


2009/7/29 Joao Carlos Silvério <joaocarlo...@yahoo.com.br>

Joao Carlos Silvério

unread,
Jul 29, 2009, 10:57:34 AM7/29/09
to dotn...@googlegroups.com
Não deu certo, o erro persiste.

Alguem sabe como pegar o valor da coluna que esta sendo criada através deste evento ?

Neste caso, eu jogava o valorTotal na coluna que eu quiser, invês de ter que setá-la num controle.




 

Atenciosamente,

 

João Carlos Silvério

Cel.: (31) 8881-8883

MSN: agito...@hotmail.com
Home Page: www.joaocarlossilverio.com (em breve)




De: Hendrik Araujo <jhen...@gmail.com>
Para: dotn...@googlegroups.com
Enviadas: Quarta-feira, 29 de Julho de 2009 11:49:29
Assunto: [.Net - BR] Re: Repeater - Somar valores no FooterTemplate

Hendrik Araujo

unread,
Jul 29, 2009, 11:02:41 AM7/29/09
to dotn...@googlegroups.com
A propriedade ShowFooter ta habilitada ?

Joao Carlos Silvério

unread,
Jul 29, 2009, 11:18:08 AM7/29/09
to dotn...@googlegroups.com
O controle Repeater não tem esta propriedade.



 

Atenciosamente,

 

João Carlos Silvério

Cel.: (31) 8881-8883

MSN: agito...@hotmail.com
Home Page: www.joaocarlossilverio.com (em breve)


Enviadas: Quarta-feira, 29 de Julho de 2009 12:02:41

Assunto: [.Net - BR] Re: Repeater - Somar valores no FooterTemplate

A propriedade ShowFooter ta habilitada ?

2009/7/29 Joao Carlos Silvério <joaocarlo...@yahoo.com.br>
Não deu certo, o erro persiste.

Alguem sabe como pegar o valor da coluna que esta sendo criada através deste evento ?

Neste caso, eu jogava o valorTotal na coluna que eu quiser, invês de ter que setá-la num controle.




 

Atenciosamente,

 

João Carlos Silvério

Cel.: (31) 8881-8883

MSN: agito...@hotmail.com
Home Page: www.joaocarlossilverio.com (em breve)



De: Hendrik Araujo <jhen...@gmail.com>
Para: dotn...@googlegroups.com
Enviadas: Quarta-feira, 29 de Julho de 2009 11:49:29
Assunto: [.Net - BR] Re: Repeater - Somar valores no FooterTemplate

Tenta criar o objeto e adicionar no item

Dim lbl As New Label
lbl.Text = totalValor
e.Item.Controls.Add(lbl)


2009/7/29 Joao Carlos Silvério <joaocarlos.silverio@yahoo..com.br>
Galera,

Tenho um repeater que lista os produtos de um pedido. Esta lista contém várias informações do produto, inclusive o valor.

Gostaria de somar os valores de todos os produtos na <FooterTemplate> (rodapé do Repeater).

Para isto utilizei o seguinte, porém ocorre o erro: Referência de objeto não definida para uma instância de um objeto. na linha em negrito abaixo.

Obs.
  • ProdutoInfo é uma classe de Objeto que contém as propriedades referente o produto, dentre elas o valor do produto
  • lblTotalValor é um Label que foi criado na <FooterTemplate>


Protected Sub rptProdutos_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptProdutos.ItemDataBound

        If (e.Item.ItemType = ListItemType.Item) Or (e.Item.ItemType = ListItemType.AlternatingItem) Then

            Dim objProduto As ProdutoInfo = e.Item.DataItem
            totalValor = totalValor + objProduto.Valor

        ElseIf e.Item.ItemType = ListItemType.Footer Then
           
            Dim lbl As Label = e.Item..FindControl("lblTotalValor")

            lbl.Text = totalValor

        End If

    End Sub


 

Atenciosamente,

 

João Carlos Silvério

Cel.: (31) 8881-8883



Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 - Celebridades - Música - Esportes


Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 10 - Celebridades - Música - Esportes

Hendrik Araujo

unread,
Jul 29, 2009, 12:29:41 PM7/29/09
to dotn...@googlegroups.com
Amigo fiz um teste aqui e funcionou, está em c#....

ASPX:

<asp:Repeater ID="Repeater1" runat="server" 
            onitemdatabound="Repeater1_ItemDataBound">
            <ItemTemplate>
                <%# DataBinder.Eval ( Container.DataItem, "CustomerID" ) %><br />
                <%# DataBinder.Eval ( Container.DataItem, "Address" ) %><br />
                <%# DataBinder.Eval ( Container.DataItem, "City" )%><br />
                <%# DataBinder.Eval ( Container.DataItem, "CompanyName" ) %><br />
                <%# DataBinder.Eval ( Container.DataItem, "ContactName" ) %><br />
                <%# DataBinder.Eval ( Container.DataItem, "ContactTitle" ) %><br />
                <%# DataBinder.Eval ( Container.DataItem, "Country" ) %><br />
                ------------------------------------------------------------------------------------<br />
            </ItemTemplate>
            <FooterTemplate>
                <asp:Label ID="lblMensagem" runat="server" />
            </FooterTemplate>
        </asp:Repeater>

CODECS:

protected void Repeater1_ItemDataBound ( object sender, RepeaterItemEventArgs e )
    {
        if ( e.Item.ItemType == ListItemType.Footer )
        {
            ( ( Label ) e.Item.FindControl ( "lblMensagem" ) ).Text = "TOTAL : blablabla";

Joao Carlos Silvério

unread,
Jul 29, 2009, 1:25:11 PM7/29/09
to dotn...@googlegroups.com
Hendrik,

Após o almoço reiniciei o pc, abri a solution novamente e fiz como vc citou e deu certo.

Devia ter algum outro erro na solução, qual eu não reparei.

Vlw pela ajuda!



 

Atenciosamente,

 

João Carlos Silvério

Cel.: (31) 8881-8883

MSN: agito...@hotmail.com
Home Page: www.joaocarlossilverio.com (em breve)


Enviadas: Quarta-feira, 29 de Julho de 2009 13:29:41

Bruno Fabricio

unread,
Jul 29, 2009, 1:58:36 PM7/29/09
to dotn...@googlegroups.com
E quando o povo de suporte diz que é só reiniciar a gente nunca acredita rs
Acha que é preguiça deles em mexer rs
Reply all
Reply to author
Forward
0 new messages