Fazer uma PerguntaFazer uma Pergunta
 

RespondidoTabPanel Dinamicamente

  • sexta-feira, 6 de novembro de 2009 17:09Thiago Lima Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Tenho uma página onde o usuário vai escolher uma opção em um dropdownlist e quando der OK, eu crio Tabs dinamicas e dentro delas possui alguns controles checkboxes e label.
    Criei o metodo Page_Init e lá eu verifico via Request[ddl.UniqueID] e pego o valor escolhido no DropDown e passo esse valor por parametro para um metodo que fiz que cria as tabs dinamicamente.

    O Processo de criaçao das tabs está funcionando perfeito, eu vou acompanhando em modo Debug e ele cria tudo certinho, porem, nao renderiza na tela.

    Através do FireBug, eu vi que ele fica assim: <div id="TabContainer1_TabPanel2_tabpageManut" class="ajax__tab_xp ajax__tab_container ajax__tab_default" style="visibility: hidden;">.

    Porque ele fica como se eu tivesse colocado Visible=False.

    Aí, depois que escolho uma opção no dropdownlist, depois que ele processa tudo e a tela fica na mesma, eu resolvi dar um Refresh, ai que foi que as tabs apareceram.

    Alguem pode me dar uma dica ai ?

    Obrigado

    Thiago

Respostas

  • sexta-feira, 6 de novembro de 2009 17:20Erysson Barros Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido

    Fale,

     

    Uma opção é criar o evento SelectedIndexChanged no dropdownlist de acordo com a listagem 1

     

        protected void Dropdownlist1_SelectedIndexChanged(object sender, EventArgs e)

        {

            //Colocar a lógica de exibir/desaparecer

        }

     

    Abraço!


    Se a resposta solucionar sua dúvida, favor - Votar como Útil Abraço!

Todas as Respostas

  • sexta-feira, 6 de novembro de 2009 17:13Seilor Bonancio Junior Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Olá por esse trecho de html não está mostrando que a tab foi criada, só mostra que vc criou uma div, coloque o codigo html inteiro gerado e o seu código que está gerando
  • sexta-feira, 6 de novembro de 2009 17:16RRCruz Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Verifica se tu não tem algum style definido direto no componente. Quando tu usa visible = false o sistema normalmente nem renderiza na tela.

    Não entendi porque você tá usando request, este valor está vindo de outra página? Pelo que consegui entender o DDL está na mesma página das tabs...
  • sexta-feira, 6 de novembro de 2009 17:20Erysson Barros Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido

    Fale,

     

    Uma opção é criar o evento SelectedIndexChanged no dropdownlist de acordo com a listagem 1

     

        protected void Dropdownlist1_SelectedIndexChanged(object sender, EventArgs e)

        {

            //Colocar a lógica de exibir/desaparecer

        }

     

    Abraço!


    Se a resposta solucionar sua dúvida, favor - Votar como Útil Abraço!
  • sexta-feira, 6 de novembro de 2009 17:21Thiago Lima Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Na verdade ele criou, eu que nao copiei o codigo inteiro...

    <div id="TabContainer1_TabPanel2_tabpageManut" class="ajax__tab_xp ajax__tab_container ajax__tab_default" style="visibility: hidden;">
        <div id="TabContainer1_TabPanel2_tabpageManut_header" class="ajax__tab_header">
        </div>
        <div id="TabContainer1_TabPanel2_tabpageManut_body" class="ajax__tab_body">
            <div id="TabContainer1_TabPanel2_tabpageManut_tabpageManut_tab_RE" class="ajax__tab_panel" style="display: none; visibility: hidden;">
            </div>
            <div id="TabContainer1_TabPanel2_tabpageManut_tabpageManut_tab_SEAPOIO" class="ajax__tab_panel" style="display: none; visibility: hidden;">
            </div>
            <div id="TabContainer1_TabPanel2_tabpageManut_tabpageManut_tab_SMS" class="ajax__tab_panel" style="display: none; visibility: hidden;">
            </div>
            <div id="TabContainer1_TabPanel2_tabpageManut_tabpageManut_tab_CLIOPER" class="ajax__tab_panel" style="display: none; visibility: hidden;">
            </div>
        </div>
    </div>

    Se ver ai, ele criou as tabs, so que estao todas com HIDDEN!
    E como eu disse antes, se eu der um refresh na tela, elas aparecem...

    Resumindo, no Page_Init eu crio as Tabs e toda vez que o usuario escolher uma opção no dropdown, eu gravo a opçao escolhida em sessao para assim, a cada postback, ter as tabs sempre criadas.

    Mas me parece que eu preciso "forçar" um refresh para elas aparecerem.
  • sexta-feira, 6 de novembro de 2009 17:24Thiago Lima Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Mas pelo que li em alguns sites, eu preciso criá-las no metodo Page_Init...

  • sexta-feira, 6 de novembro de 2009 17:25Seilor Bonancio Junior Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Faça igual ao erysson falou põe no SelectedIndexChanged, o que daria para vc fazer e por um updatePanel(updatemode condicional) fora dessa div pai, e dae depois que criar ela vc daria um updatepanel.update(); acho que assim vai dar certo.
  • sexta-feira, 6 de novembro de 2009 17:50Thiago Lima Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Bom galera, agradeço a ajuda e atençao de todos. Consegui resolver!

    Fiz o que nosso amigo Erysson disse, criei o SelectedIndexChanged e lá criei as tabs, porem, eu preciso usar esse mesmo metodo dentro do Page_Init, para ele manter as tabs durante os postbacks na pagina.

    []'s

    Thiago
  • sexta-feira, 6 de novembro de 2009 17:54Seilor Bonancio Junior Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Faz com o updatePanel com updatemode = conditional que não precisa ter no page_init.