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
Fazer uma PerguntaFazer uma Pergunta
 

RespondidoComponentes, Eventos e Extend em tempo de execução

  • terça-feira, 3 de novembro de 2009 18:10raphael_moreira Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    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

  • quarta-feira, 4 de novembro de 2009 0:26kauebranco Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    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

  • terça-feira, 3 de novembro de 2009 18:24kauebranco Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    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;"
  • terça-feira, 3 de novembro de 2009 18:41Seilor Bonancio Junior Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Vc pode criar um userControl e colocar um PlaceHolder, e adicionando os componentes em runtime.
  • terça-feira, 3 de novembro de 2009 20:46raphael_moreira Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Contém Código

    Bom, consegui criar os componentes em tempo de execução perfeitamente. Fiz assim:

    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]);
    
    Blz. Consegui manipular quantos eu quiser através de um count e talz...
    O problema agora é: Como vou agregar o Ajax "AlwaysVisibleExtender"?

    Tentei fazer assim:

    AjaxControlToolkit.AlwaysVisibleControlExtender avc = new AjaxControlToolkit.AlwaysVisibleControlExtender();
    avc.ID = "btTeste_AlwaysVisibleControlExtender";
    avc.Enabled = true;
    avc.TargetControlID = "btTeste";
    
    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.
    Alguém sabe como criar e associar um extender ajax a um componente em tempo de execução?
    Ph
  • quarta-feira, 4 de novembro de 2009 0:26kauebranco Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    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
    •  
  • quarta-feira, 4 de novembro de 2009 13:27raphael_moreira Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    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
  • quarta-feira, 4 de novembro de 2009 13:53raphael_moreira Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    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
  • quarta-feira, 4 de novembro de 2009 15:36kauebranco Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Do mesmo jeito que você fez com o outro Panel.



  • quarta-feira, 4 de novembro de 2009 18:24raphael_moreira Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Hmm.. mas o que usei foi o PlaceHolder (que você recomendou)
    Posso fazer o mesmo com um Panel?

    Panel1.Controls.Add()?
    Ph
  • quarta-feira, 4 de novembro de 2009 20:28kauebranco Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Sim. isso mesmo.
  • quarta-feira, 4 de novembro de 2009 20:37William John Adam Trindade Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    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