none
Chamar um método de um UserControl de uma página RRS feed

  • Pergunta

  • Então... tenho uma MasterPage. Nesta MasterPage tenho um UserControl que exibe a quantidade de itens num carrinho de compras.

    O que preciso?

    Que na página Carrinho.aspx, ao cliente excluir um item, esse método seja chamado para que seja exibido o número exato de itens no carrinho. 

    Como faço isso?

    Desde já, obrigado!
    • Editado wcsantos quinta-feira, 15 de setembro de 2016 19:02
    quinta-feira, 15 de setembro de 2016 19:02

Todas as Respostas

  • Boa tarde!

    Você pode criar uma interface e implementar ela no usercontrol, segue um exemplo:

    public interface ICarrinho
    {
        void AtualziarItens();
    }

    //Seu user control

    public partial class Carrinho : System.Web.UI.UserControl, ICarrinho
    {
        public void AtualziarItens()
        {
            //sua lógica/método para atualziar os itens
        }

    }

    //Na página Carrinho.aspx
    protected void LoadFirstTab()
    {
        var carrinho = Page.LoadControl("/<diretório_do_usercontrol>/Carrinho.ascx");

        var carrinho = (ICarrinho)carrinho;

        carrinho.AtualziarItens();
    }


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    • Sugerido como Resposta Leandro Tozetto quinta-feira, 15 de setembro de 2016 19:36
    quinta-feira, 15 de setembro de 2016 19:36
  • Olá Leandro.

    Funcionou, obrigado.

    Mas tem um detalhe... no passo-a-passo (F11) o valor chega no .ascx e atualiza o .Text da Label corretamente, recebe o valor real atual, PORÉM no site continua exibindo o valor anterior. 

    Tipo, tenho 4 itens no carrinho, excluo 1 item, ele vai no .Text da quantidade e coloca 3 certinho, mas no site continua exibindo 4.

    Estranho, sabe o que pode ser? Alguma idéia?

    sexta-feira, 16 de setembro de 2016 15:08
  • Podem ser n problemas, tem como fornecer mais detalhes de como está este processo?

    Como você atualiza isso, utiliza updatepanel? Caso sim, o usercontrol também está em updatepanel?

    O carrinho com os 4 itens estão em session? A session foi atualizada com o valor 3?


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    sexta-feira, 16 de setembro de 2016 17:08
  • Então... a estrutura é essa:

    <masterpage>
     <userControl>
      <lblQuantidadeItens>
     </userControl>
     <body>
     </body>
    </masterpage>

    <pagina com masterpage>
     <body>
      <updatepanel>
       <gridView>
        <button com evento remover>
       <gridView>
      </updatepanel>
     </body>
    </pagina>

    Quando clico no botão, ele atualiza as informações, atualiza o GridView, atualiza a Session["quantidade"]... tudo certo. No UserControl, no CÓDIGO,  a label lblQuantidadeItens recebe o valor da Session["quantidade"] certinho, mas na tela continua o valor antigo.

    Já comentei o <updatepanel> e deixei a grid atualizar a página (dar refresh), mas ainda assim a quantidade exibida continua errada.



    O literal recebe o valor 3, mas na página continua exibindo o valor 4.

    Estranho... 

    Mudando de página, através do menu, a quantidade é atualizada corretamente.
    • Editado wcsantos sexta-feira, 16 de setembro de 2016 17:48
    sexta-feira, 16 de setembro de 2016 17:47
  • Boa tarde wcsantos,

    Esse problema persiste?

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 20 de setembro de 2016 17:18
    Moderador
  • Sim, persiste!

    "Funciona", no passo-a-passo (F11) exibe o valor correto mas no browser continua desatualizado. Passei o problema e segui o projeto até que alguém pudesse me ajudar. Mais tarde, não obtendo ajuda, tentarei outros meios.

    Obrigado!

    terça-feira, 20 de setembro de 2016 18:31