Botão não postback dentro de diálogo jQuery dentro de UC
-
05-07-2019 - |
Pergunta
Estou desenvolvendo um controle de usuário e tem um botão de asp.net dentro jQuery diálogo, mas quando eu pressionar o botão não acontece nada quero dizer que não chama o evento de clique de botão na serverside, eu tentei
dlg.parent().appendTo(jQuery("form:first"));
mas não me ajudar também, é possível obter este dentro asp.net UserControl? Também gostaria de saber se eu posso usar UpdatePanel de diálogo dentro ou não?
Solução
Você pode fazer o botão de um botão de diálogo e colocar um botão asp.net na página com a ID de HiddenButton e envolvê-la em um div com um estilo de display:none;
Assim, o botão não é visível. (Não deve ser visível = "false" para que o botão é processado)
Na caixa de diálogo JavaScript adicionar um botão que tem o efeito de clicar no botão escondido
jQuery("#dialog").dialog({
buttons: {
'ButtonText': function() {
//save the session
__doPostBack('<%# HiddenButton.ClientID %>', '')
jQuery(this).dialog('close');
}
}
});
e adicionar um manipulador asp clique com o botão escondido
<div style="display:none;">
<asp:Button ID="HiddenButton" OnClick="HiddenButton_Click" ></Button>
<div>
Clique em evento sobre o serverside dispara quando o botão de diálogo é clicado
Espero que isso ajude eu uso esse padrão o tempo todo
Outras dicas
Eu suspeito que pode ser algo a ver com ASP.NET não ser capaz de encontrar o botão de dentro do formulário.
Use a configuração do evento .Live em jQuery - ligam o evento antes de criar o diálogo usando .Live e ele deve funcionar ...
Você vai acabar com algo parecido com isso em sua função document.ready:
$("#btn").live("click", function(){
// Do something
});
$("#dialog").dialog({
...
}
Eu tive o mesmo problema. Eu acabei puxando o botão para fora da janela, escondendo-lo com css, e, em seguida, provocando-o do próximo evento na caixa de diálogo (eu vou fazê-lo de forma mais limpa depois, mas isso serve para ilustrar o problema, pelo menos).