Microsoft Developer Network >
Página Inicial dos Fóruns
>
Fóruns do Web Development
>
ASP .NET
>
Componentes, Eventos e Extend em tempo de execução
Componentes, Eventos e Extend em tempo de execução
- Bom dia.
Estou com a seguinte situação:
- Tenho um componente do tipo Image na tela onde exibe o Mapa de uma região.
- Do banco de dados, recebo N coordenadas;
- Para cada Coordenada, tenho que criar um componente do tipo ImageButton;
- Para cada ImageButton, devo ter seu respectivo evento;
- Para cada ImageButton, devo ter o Extender "AlwaysVisibleControl" do Ajax;
Tudo isso em tempo de execução, já que não sei quantas coordenadas podem vir.
Preciso disso pois foi o único jeito de plotar por cima de uma mapa, pontos específicos.
Alguém tem alguma idéia ou sugestão de como fazer? Nem sei se a maneira que pensei é a correta.
Obrigado.
Ph
Respostas
- Acredito que seja necessário incluir o controle do ToolKit dinamicamente também
do mesmo jeito que você incluiu os TextBox.
phPonto.Controls.Add(avc);- Marcado como Respostaraphael_moreira quarta-feira, 4 de novembro de 2009 13:28
Todas as Respostas
- Uma idéia é o seguinte:
Ao invés de usar esses controles do Asp.Net(nesse caso) coloque na GridView um LiteralControl.
Crie a imagem pelo HTML e crie junto o mapeamento conforme mostra o exemplo:
http://www.htmlstaff.org/ver.php?id=1343
Depois atribua o HTML gerado ao LiteralControl através do "LiteralControl1.Text = varHTML;" - Vc pode criar um userControl e colocar um PlaceHolder, e adicionando os componentes em runtime.
Bom, consegui criar os componentes em tempo de execução perfeitamente. Fiz assim:
Blz. Consegui manipular quantos eu quiser através de um count e talz...List<Button> ListaPontos; ListaPontos = new List<Button>(); Button temp = new Button(); temp.ID = "btTeste"; temp.Text = "Butão"; temp.Click += new System.EventHandler(this.myEventHandler); ListaPontos.Add(temp); phPonto.Controls.Add(ListaPontos[0]);
O problema agora é: Como vou agregar o Ajax "AlwaysVisibleExtender"?
Tentei fazer assim:
Mas não deu muito certo. Apesar de não dar erro algum, ao ver o código fonte da página, é visível que ele sequer jogou o código no html.AjaxControlToolkit.AlwaysVisibleControlExtender avc = new AjaxControlToolkit.AlwaysVisibleControlExtender(); avc.ID = "btTeste_AlwaysVisibleControlExtender"; avc.Enabled = true; avc.TargetControlID = "btTeste";
Alguém sabe como criar e associar um extender ajax a um componente em tempo de execução?
Ph- Acredito que seja necessário incluir o controle do ToolKit dinamicamente também
do mesmo jeito que você incluiu os TextBox.
phPonto.Controls.Add(avc);- Marcado como Respostaraphael_moreira quarta-feira, 4 de novembro de 2009 13:28
- Realmente funcionou.
Estava esquecendo de jogar o componente ajax no PlaceHolder. =)
Valeu. Obrigado pela ajuda.
Agora sim ficou show. Renderiza o Mapa (baseado na resolução do PC do usuário)l, e plota os pontos por cima perfeitamente.
Ph - Opa...
me veio agora uma situação...
Quero usar o Extender do Ajax "HoverMenu" (que também será criado dinamicamente);
Blz, criar agora, sem problema. Só que, para usar o HoverMenu, preciso de um Panel (que vai ser o menuzinho que vai aparecer quando o HoverMenu for disparado).
O problema é que esse Panel também tem que ser em tempo de execução... e como é que vou colocar componentes dentro desse Panel que estou criando?
Ph - Do mesmo jeito que você fez com o outro Panel.
- Hmm.. mas o que usei foi o PlaceHolder (que você recomendou)
Posso fazer o mesmo com um Panel?
Panel1.Controls.Add()?
Ph - Sim. isso mesmo.
Olá
Eu sei que pode ser um canhao para matar mosquito, mas eu daria uma olhada com carinho aqui:
http://msdn.microsoft.com/en-us/library/dd877180.aspx
e
http://www.microsoft.com/maps/isdk/ajax/
Pode economizar algum tempo de desenvolvimento..
Att
William

