none
Travar código form ao abrir modal RRS feed

  • Pergunta

  • Possuo um modal boostrap que funciona perfeitamente, chamo ele no c# code-behind, dessa forma:

    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "myModal", "$(function() {openModalExclusao();});", true);

    E essa é a função pra abrir:

    function openModalExclusao() {
      $("#modalexclusao").modal('show');
    }

    Porém eu preciso que ele pare a execução do código quando o modal for aberto, e só continuar quando ele for fechado, dessa forma ele executa o código depois deste abrindo o modal normal, preciso igual é em um projeto desktop, só que que no ASP.NET. Como posso proceder ?

    Eu vou fazer uma requisição de senha, por exemplo tal usuário vai excluir, mas ele só pode excluir com a senha do administrador, eu preciso verificar se a senha confere, e se a senha conferir continuar a execução do código:

    if (senha.existesenha == 1) {
      ScriptManager.RegisterStartupScript(Page, Page.GetType(), "myModal", "$(function() {openModalExclusao();});", true);
      if (senha.confere == 1) {
        clsdb.ExecutaSQL("delete tabela where id =" + ID);
      }
    }

    Só que antes de ter o retorno do confere,ele ja continua o código e não executa o delete. Porque o retorno do confere, está no click do button do modal.
    sexta-feira, 13 de abril de 2018 12:35

Respostas

Todas as Respostas

  • Bom dia, Mariana C. Costa. Tudo bem?

    Obrigado por usar o fórum MSDN.

    Conseguiu algum avanço no teu caso?

    Se ainda não, o que precisa?

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 16 de abril de 2018 14:55
    Moderador
  • Não entendi o seu "travar", coloque um botão no form e no clique dele vc testa a senha.


    Junior

    segunda-feira, 16 de abril de 2018 15:10
  • Eu jaço isso, porém ele não para o código onde peço pra abrir o modal, ele termina de executar, e no caso eu preciso do retorno da senha, pra excluir, só que este código continua mesmo com o modal aberto.

    if (senha.existesenha == 1) {
      ScriptManager.RegisterStartupScript(Page, Page.GetType(), "myModal", "$(function() {openModalExclusao();});", true);
      if (senha.confere == 1) {
        clsdb.ExecutaSQL("delete tabela where id =" + ID);
      }
    }

    Até o senha.existesenha == 1, funciona certinho, ele abre o modal, porém ao abrir o modal, ele já cai no else, porque como não teve o retorno, ele não entra no senha.confere == 1, por isso eu falo de travar o código. 

    segunda-feira, 16 de abril de 2018 18:39
  • Não entendi muito bem a sua lógica, mais o que vc pode fazer é usar um <input id="senha" type="hidden" runat="server" />

    e fazer o teste nele, no clique do seu botão vc colocar assim senha.value == "1";

     

    Junior

    segunda-feira, 16 de abril de 2018 18:59
  • Mas a confirmação do código, está logo em seguida de chamar o modal. 

    if (senha.existesenha == 1) {
    //aqui abre o modal para digitar a senha
      ScriptManager.RegisterStartupScript(Page, Page.GetType(), "myModal", "$(function() {openModalExclusao();});", true);
    //aqui está continuando a execução, mesmo com o modal aberto, ele deveria esperar a confirmação do click do button do modal, que passa pra variável confere o valor. É como se fosse um desktop, ao abrir um formDialog, ele para a execução, e ao fechar termina a execução do código.
      if (senha.confere == 1) {
        clsdb.ExecutaSQL("delete tabela where id =" + ID);
      }
    }

    Tentei explicar no código pra que você possa entender. Acho que agora ficou melhor a explicação.

    segunda-feira, 16 de abril de 2018 19:17
  • Então vc vai ter que usar javascript para atualizar o campo na página principal logo que vc fechar o modal .

    eu sempre uso campos hidden para fazer isso.

    vou te passar um exemplo :

    window.opener.document.forms[0].vales.value = document.frmAlteracao.Total.value;

    No clique do botão do modal tenho uma function em javascript que o exemplo acima é uma linha dessa function, existem outras mais é a mesma coisa só muda os campos, o que estou fazendo ai

    windows,opener.document.forms[0].vales.value é um campo hidden que tenho no modal então estou pegando o valor dele e jogando em outro campo hidden na página principal.



    Junior

    segunda-feira, 16 de abril de 2018 19:37
  • Junior, o problema que o código não espera a requisição para terminar, ele continua mesmo, pois o modal, não faz o código parar, para esperar o retorno. 
    terça-feira, 17 de abril de 2018 18:04
  • Olá Mariana, para que o sistema funcione da maneira que você quer será necessário dividir em 2 métodos.
    1. o primeiro método você executa essa chamada if (senha.existesenha == 1) {ScriptManager.RegisterStartupScript(Page, Page.GetType(), "myModal", "$(function() {openModalExclusao();});", true);}

    Depois na MODAL que exige a senha de administrador você vai precisar colocar um botão que execute o segundo método onde neste você realiza a conferência da senha.
     if (senha.confere == 1) { clsdb.ExecutaSQL("delete tabela where id =" + ID);}

    Dessa maneira você vai poder "parar" a leitura do código até obter a informação necessária.

    Abs!


    Leandro de Agostini MCTS - Web Application, Framework 4

    terça-feira, 17 de abril de 2018 18:41
  • Mariana,

    Esse link abaixo poderá te ajudar. Tem 4 artigo mostrando como fazer a janela modal sem travar.

    https://ecode10.com/Pesquisar?q=modal


    Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.

    Mauricio Junior - Comunidade www.ecode10.com

    quarta-feira, 18 de abril de 2018 12:39
  • Boa tarde,

    Por falta de retorno essa thread está encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,


    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 2 de maio de 2018 20:50
    Moderador