Pergunta

Eu tenho um acordeão ajax, e cada painel contém um updatepanel (criado dinamicamente). Quero que os updatepanels para refrescar quando o cabeçalho do painel é clicado, mas não há nenhum evento clique.

Eu posso aparecer um botão no cabeçalho, e registrá-lo como um gatilho asynch usando o scriptmanager, mas eu não quero um botão, eu quero todo o cabeçalho para ser um gatilho.

Eu não posso ver uma maneira de definir uma div ou um rótulo como um gatilho, como eles não têm um evento do lado do servidor clique. Existe alguma outra maneira eu posso fazer isso?

Foi útil?

Solução

Use jQuery.

A sintaxe seria tão fácil como o seguinte:

$('#myHeading').click(function(){
    // Your code here
});

Às vezes com ASP.NET eu tive que usar um jogo ID curinga porque ASP.NET cria muito longa semi-aleatório clientside ID é para seus elementos. Você faria algo como o seguinte:

$('[id*="myHeading"]').click(function(){
    // Your code here
});

Essencialmente, você pode selecionar qualquer coisa no DOM e anexar um manipulador de eventos a ele com jQuery. Às vezes você tem que ser criativo com os seletores.

IMPORTANTE: Se você estiver usando updatepanels eo título que você deseja monitorar por um clique é dentro desse painel, você precisará REBIND esses manipuladores de eventos para o elemento que você está selecionando depois o painel é carregada / re-carregado via ajax . Isto pode ser conseguido usando o seguinte código:

var prm = Sys.WebForms.PageRequestManager.getInstance();

prm.add_pageLoaded(panelLoaded);

function panelLoaded(sender, args){

    $('[id*="myHeading"]').click(function(){
        // Do something after there is a click
    });

}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top