none
AutoPostBack de DropDownList não funciona junto com J-Query! RRS feed

  • Pergunta

  • Olá amigos, estou desenvolvendo uma tela para um sistema web que estou fazendo e estou com o seguinte problema:

    Coloquei um J-Query chamado DropKick para deixa meu dropdownlist mais elegante e ele realmente fica. Porém, eu preciso ativar uma série de métodos e eventos toda vez que é feito uma mudança na opção selecionada no dropdownlist. Criei o evento SelectedIndexChange e ativei o AutoPostBack do DropDownList. Porém, mesmo assim, quando eu mudo as opções do DropDownList, ele não realiza o autopostback, e então não faz as coisas que eu precisava fazer. Alguem tem alguma solução?

    Esse é o site da J-Query:

    http://jamielottering.github.com/DropKick/

    segunda-feira, 28 de maio de 2012 21:05

Todas as Respostas

  • Vê no console(f12 no chrome) se está dando algum erro de script.

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    segunda-feira, 28 de maio de 2012 21:39
  • Você poderia colocar o código deste DropDownList para analisarmos ??
    Você este usando de UpdatePanel na sua pagina ??

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    segunda-feira, 28 de maio de 2012 21:56
  • Amigo,

    Se você utilizar um debug para visualizar o código que foi gerado após o load da página, você vai notar que esse seu select foi oculto e virou um div e as opções uma tag <a>, isso é comum nesses plugins que alteram o layout do select.

    Solução

    O ideal antes de utilizar qualquer plugin é ler a documentação e testar os códigos de exemplo, estou falando isso por que eu baixei o plugin e no pacote veio a solução que você precisa. O terceiro "select" do arquivo de exemplo, utiliza uma class que já é auto explicativa ".existing_event" que vai ativar o seguinte evento:

    $('.existing_event').dropkick({
            change: function () {
              $(this).change();
            }
          });

    Esse script vai utilizar o próprio evento que está relacionado ao seu DropDrown que seria o postback.

    Espero que você tenha entendido e se tiver mais alguma dúvida é só postar!

    Boa sorte!


    Não esqueça de marcar como útil uma resposta que te ajude.
    "A diversão é a alma do negócio"

    terça-feira, 29 de maio de 2012 14:12
  • Eu entendi o que vc quis dizer, porém não estou conseguindo executar isso.

    Gostaria que desse uma olhada e visse se realmente está certo:

    <script type="text/javascript" language="javascript">
        $(document).ready(function () {
            $('.default').dropkick();
        });
    
        $('.existing_event').dropkick({
            change: function () {
                $(this).change();
            }
        });
    </script>
    <asp:DropDownList ID="ddrArquivo" Visible = "true" Class="default" AutoPostBack = "true" runat="server">
    </asp:DropDownList>
    ddrArquivo.AutoPostBack = true;
    void ddrArquivo_SelectedIndexChanged(object sender, EventArgs e)
            {
                for (int x = 0; x <= 10; x++)
                {
                    panelarquivista.Visible = true;
                    lstArquivistas.Items.Add(x.ToString());
                }
            }
    Desculpe por colocar muitos códigos, e agradeço já pela ajuda de vocês!



    terça-feira, 29 de maio de 2012 17:13
  • Amigo,

    Só para explicar um pouco...jquery possui várias formas de localizar um objeto as mais utilizadas não por CLASS e ID ex.:

    ".nome-da-class-css" procura por elementos com o nome da class css que você indicou
    "#id" procura pelo ID do objeto

    Como em .NET as vezes o ID é uma combinação de coisas infelizmente não da para utilizar então a gente utiliza o CLASS para fazer isso. Nesse caso o código que você postou ainda continua errado, por que no DropDown você está utilizando a CLASS="DEFAULT" que vai associar o seguinte código JS ao elemento:

        $(document).ready(function () {
            $('.default').dropkick();
        });

    Para o seu código funcionar você deve mudar o código do DropDown para:

    <asp:DropDownList ID="ddrArquivo" Visible = "true" Class="existing_event" AutoPostBack = "true" runat="server">
    </asp:DropDownList>

    Espero que você tenha entendido.

    Boa sorte!


    Não esqueça de marcar como útil uma resposta que te ajude.
    "A diversão é a alma do negócio"

    terça-feira, 29 de maio de 2012 17:45
  • Eu imaginei isso, e fiz exatamente isso..porém quando fiz isso, o DropDown nem apareceu no form...Vou criar um outro form em branco para testar e jájá dou um feedback!
    terça-feira, 29 de maio de 2012 17:59
  • acredito que ele não vai aparecer pq o seu css está todo como ".default" o correto seria você manter o seu código do jeito que está e fazer o seguinte:

    $('.default').dropkick({
            change: function () {
                $(this).change();
            }
        });

    Boa sorte!


    Não esqueça de marcar como útil uma resposta que te ajude.
    "A diversão é a alma do negócio"

    terça-feira, 29 de maio de 2012 18:37
  • Não está dando certo =/

    Vou continuar tentando, se eu obtiver algum sucesso, eu posto para vocês a solução...Qualquer ajuda ainda é bem vinda!

    terça-feira, 29 de maio de 2012 20:04
  • Amigo,

    Lendo o seu código novamente encontrei mais um erro...está faltando o "onselectedindexchanged" no seu dropdown!
    Para testar se está tudo funcionando tire o dropkick, teste tudo e veja se está rolando, depois coloque o dropclick.

    Boa sorte!


    Não esqueça de marcar como útil uma resposta que te ajude.
    "A diversão é a alma do negócio"

    terça-feira, 29 de maio de 2012 21:56
  • Sem o J-Query ele funciona perfeito através do evento void DropDownList1_SelectedIndexChanged(object sender, EventArgs e).

    Porém, quando eu aplico a J-Query ele deixa de funcionar...Aonde iria este "onselectedindexchanged"?

    quarta-feira, 30 de maio de 2012 15:58
  • Sem o J-Query ele funciona perfeito através do evento void DropDownList1_SelectedIndexChanged(object sender, EventArgs e).

    Porém, quando eu aplico a J-Query ele deixa de funcionar...Aonde iria este "onselectedindexchanged"?

    Certamente este plugin substitui o evento onchange que dispara o seu DropdownList1_SelectedIndexChanged(), tudo isso no cliente, veja se no seu dropdownlist (elemtno select no html) contem algo do tipo assim no evento onchange:

    onchange="javascript:setTimeout('__doPostBack(\'




    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    quarta-feira, 30 de maio de 2012 16:08
  • apareceu:

    onchange="javascript:setTimeout('__doPostBack(\'ctl00$PlaceHolderMain$DropDownList1\',\'\')', 0)"

    Não sei se mencionei, mas estou usando o Sharepoint, não se isso implica em alguma coisa...

    quarta-feira, 30 de maio de 2012 17:28