Usuário com melhor resposta
UpdatePanel dentro de outro (cascateado)

Pergunta
-
Bom dia,
Tenho em minha aplicação um updatepanel na master page para todos os containers. Porém, em um dos containers, eu tenho um update dinâmico e independente do update da masterpage. O grande problema é que o update da master está fazendo atualizações junto com o timer que encontra-se dentro do updatepanel deste container em questão. Resumindo: neste cascateamento, o update filho atualiza o pai também.
Navegando pelo fórum MSDN, deram a dica que, setando o updatemode para conditional, este problema seria solucionado, mas não ocorreu.
O que poderei fazer neste caso? Meu objetivo é atualizar, com o timer que encontra-se dentro do update filho, atualizar somente o que está no update filho, e não o que está no update master também.
Desde já agradeço.
Respostas
-
Oi, Cayo,
Async = vai provocar um update assíncrono
Sync = vai ser ignorado pelo update panel
O updatepanel tem uma propriedade chamada childrenastriggers e que encontra-se definida automaticamente como true. Significa que automaticamente o updatepanel vai interceptar todas as idas ao servidor dos objetos que estão dentro dele e gerencia-las.
Por isso você não conseguiu inserir um postbackTrigger (sync) para um objeto dentro do updatepanel, porque o default é que todos sejam tratados como se já tivessem trigger.
Você poderia fazer o seguinte : inverter a propriedade childrenastriggers para false e colocar um postbacktrigger para todos os objetos que você deseja que o updatepanel intercepte - menos o timer .
Só que isso daria tanto trabalho que acho mais recomendável fazer uma masterpage separada, coisa que com os recursos de nestedmasterpage e user controls você consegue fazer sem dificuldade.
[]'sDennes
* Treinamento de ASP.NET 3.5 dia 24/10 - Apenas 12x R$ 70,88 - Inscreva-se em http://www.bufaloinfo.com.br/cursos/aspnet2.asp* Treinamento de Introdução a OO e Framework .NET c/C# dia 17/10 - Apenas 12 R$ 42,53 Inscreva-se em http://www.bufaloinfo.com.br/cursos/fundamentosOOFramework.asp
Tel : (11) 3170-3056 (21)9240-5134 E-Mail: contato arroba bufaloinfo.com.br
http://www.bufaloinfo.com.br
Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp- Sugerido como Resposta Fernando CerqueiraModerator quarta-feira, 14 de outubro de 2009 23:05
- Marcado como Resposta Harley Araujo quinta-feira, 15 de outubro de 2009 10:32
Todas as Respostas
-
-
-
Olá Luciano,
Tentei o meu controle é um timer e não um botão. O timer possui um evento que faz um painel de notícias, eventos e artigos do portal que estou desenvolvendo, ficarem alternando de forma dinâmica. Mas adicionei o timer na trigger no updatepanel, conforme código abaixo, mas não surtiu efeito.
<Triggers>
<asp:AsyncPostBackTrigger ControlID="tmrPainel" />
</Triggers>
Caso você queira ver na íntegra o problema, pode acessar o endereço do portal (http://www.conilonbrasil.com.br/Principal.aspx). note os controles do ajax existentes neste container: TabPanel e TextBoxWatermarkExtender.
O TabPanel está dentro do UpdatePanel, já o TextBoxWatermarkExtender não está. Mas mesmo assim ele atualiza no evento do Timer, contido dentro do UpdatePanel da TabPanel.
Desculpe se acabei embolando, mas tentei explicar com máximo de detalhes.
Agradeço muito a sua atenção! -
-
Oi, Cayo,
Async = vai provocar um update assíncrono
Sync = vai ser ignorado pelo update panel
O updatepanel tem uma propriedade chamada childrenastriggers e que encontra-se definida automaticamente como true. Significa que automaticamente o updatepanel vai interceptar todas as idas ao servidor dos objetos que estão dentro dele e gerencia-las.
Por isso você não conseguiu inserir um postbackTrigger (sync) para um objeto dentro do updatepanel, porque o default é que todos sejam tratados como se já tivessem trigger.
Você poderia fazer o seguinte : inverter a propriedade childrenastriggers para false e colocar um postbacktrigger para todos os objetos que você deseja que o updatepanel intercepte - menos o timer .
Só que isso daria tanto trabalho que acho mais recomendável fazer uma masterpage separada, coisa que com os recursos de nestedmasterpage e user controls você consegue fazer sem dificuldade.
[]'sDennes
* Treinamento de ASP.NET 3.5 dia 24/10 - Apenas 12x R$ 70,88 - Inscreva-se em http://www.bufaloinfo.com.br/cursos/aspnet2.asp* Treinamento de Introdução a OO e Framework .NET c/C# dia 17/10 - Apenas 12 R$ 42,53 Inscreva-se em http://www.bufaloinfo.com.br/cursos/fundamentosOOFramework.asp
Tel : (11) 3170-3056 (21)9240-5134 E-Mail: contato arroba bufaloinfo.com.br
http://www.bufaloinfo.com.br
Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp- Sugerido como Resposta Fernando CerqueiraModerator quarta-feira, 14 de outubro de 2009 23:05
- Marcado como Resposta Harley Araujo quinta-feira, 15 de outubro de 2009 10:32
-
Luciano,
Muito obrigado pela atenção, mas realmente não obtive sucesso. fiz várias pesquisas com base na sua resolução e inúmeras tentativas, sem resultado positivo. Mas agradeço muito sua atenção!
Dennes,
Excelente esclarecimento! Vou buscar informações mais completas sobre isso.
Inicialmente eu até pensei em fazer uma master page, praticamente igual a outra (um clone), retirando os updates para evitar as atualizações sincronizadas com o que realmente deveria atualizar. Mas pensei que isso seria uma péssima pratica de programação. Acha que não seria?
Obrigado!
Abs -
Oi,
Utilize nested master pages. Uma com o básico, sem o updatepanel, outra com o updatepanel, sendo nested (baseada) da primeira.
Algumas páginas serão baseadas em uma, outras páginas em outra, sem que haja duplicação em ponto algum.
Lembre-se : Se em algum ponto precisar duplicar algo, como imaginou isso é uma péssima prática e consequentemente algo está sendo utilizado errado.
[]'sDennes
* Treinamento de ASP.NET 3.5 dia 24/10 - Apenas 12x R$ 70,88 - Inscreva-se em http://www.bufaloinfo.com.br/cursos/aspnet2.asp* Treinamento de Introdução a OO e Framework .NET c/C# dia 17/10 - Apenas 12 R$ 42,53 Inscreva-se em http://www.bufaloinfo.com.br/cursos/fundamentosOOFramework.asp
Tel : (11) 3170-3056 (21)9240-5134 E-Mail: contato arroba bufaloinfo.com.br
http://www.bufaloinfo.com.br
Dennes - Se resolveu, classifique a mensagem, por favor - [http://www.bufaloinfo.com.br] NOVO DVD Segurança no ASP.NET : http://www.bufaloinfo.com.br/LearingSeriesSegurancaASPNET2.asp