DoPostback atualiza a página, mas não captura o manipulador de eventos
-
21-12-2019 - |
Pergunta
Em primeiro lugar, devo mencionar que passo o dia inteiro pesquisando e não consigo descobrir o que há de errado com meu código e por que ele não funciona ...
Preciso de uma caixa de diálogo modal para confirmação em meu código, então uso esta caixa de diálogo modal do jQuery: Confirmação JQuery
O que eu preciso é incorporar essa funcionalidade com um <asp:Button>
...
Meu problema é que quando clico no botão a caixa de diálogo aparece, mas os botões sim/não não funcionam e ambos simplesmente desaparecem da caixa de diálogo.
Também uso o código abaixo, mas __doPostBack()
não fez nada, mas executa códigos js simples como alert('') perfeitamente:
$("#complexConfirm").confirm({
title: "Redirect confirmation",
text: "This is very dangerous, you shouldn't do it! Are you really really sure?",
confirm: function (button) {
__doPostBack('complexConfirm', 'OnClick');
},
cancel: function (button) {
return false;
},
confirmButton: "Yes",
cancelButton: "No"
});
Eu pesquiso e faço diálogo porque o elemento vem fora do elemento do formulário, então devo trazê-lo de volta ao formulário, mas não sei como tento o código abaixo e isso não acontece
$("#editEventModal").parent().appendTo(jQuery("form:first"));
Outro problema é tentar fazer postback com evento javascript sem a caixa de diálogo, uso 2 botões um para chamar javascript e outro para chamar isso, mas quando uso __doPostBack ele atualiza a página mas não chega ao meu evento de botão no código -behind, tento várias maneiras de chamar o evento onClick do botão, mas ele apenas atualiza a página e não chama meu butoon OnClick Mehtod !!!
A declaração dos botões é assim:
<asp:Button ID="complexConfirm" ClientIDMode="Static" runat="server" OnClick="TestBTN_Click" Text="Test" />
<asp:Button ID="checkit" ClientIDMode="Static" runat="server" OnClientClick="__doPostBack('<%=complexConfirm.UniqueID%>', '');" Text="CHECK" />
O que devo fazer para esses dois problemas?
Procuro muito e nenhuma das soluções funcionou para mim !!!
Agradecerei qualquer solução, obrigado.
Solução
Sem conhecer a declaração do seu asp:button, aqui está meu melhor palpite.
Você precisa usar o uniqueID do botão, o atributo "nome" do botão, não o ID.
__doPostBack('<%=complexConfirm.UniqueID%>', '');
além disso, como é um botão, você não precisa especificar OnClick
EDITAR:Criei um exemplo prático demonstrando o que acho que você está tentando realizar.Você pode adaptar isso à sua confirmação do jQuery conforme necessário.
aspx:
<asp:Button ID="btnTest1" runat="server" Text="Test1" OnClick="btnTest1_Click" />
javascript:
<script>
$('#<%=btnTest1.ClientID%>').confirm({
text: "This is very dangerous, you shouldn't do it! Are you really really sure?",
title: "Confirmation required",
confirm: function (button) {
// do something
__doPostBack('<%= btnTest1.UniqueID%>', '');
},
cancel: function (button) {
// do something
},
confirmButton: "Yes I am",
cancelButton: "No",
post: true
});
</script>
Código por trás:
protected void btnTest1_Click(object sender, EventArgs e)
{
Response.Write("You clicked YES");
}
Acho que parte do problema é que o nome do seu evento não foi nomeado com o nome do seu botão.Se estiver usando autoEventWireup, o que acho que você está, então seu evento não será acionado porque não consegue encontrar um evento com um nome correspondente.
Então, a primeira coisa que fiz foi eliminar o StaticClientID.você ainda pode usar jquery com IDs gerados pelo asp.net.Então me certifiquei de que o evento tivesse um nome btnTest1_Click
porque o nome do botão é btnTest1
Não sei por que você precisava do outro botão, porque parece que tudo o que você está tentando fazer é confirmar antes que o botão seja enviado.