none
Janela modal ficar permanente RRS feed

  • Pergunta

  • Opa a todos,

    Pessoal tou usando o script do Fernando Romando sobre Modal Updateprogress que esta aqui no topo deste forum, o script e simples e funciona legal. So que a janela modal desaparece depois de 1: 30 e não quando termina o evento. Como eu faco para fazer o ajax permanecer ate o fim da conclusão da rotina que pode demorar ate mais de 20 minutos.

    Obrigado.

    Codigo fonte usado pelo Fernando

    < html xmlns ="http://www.w3.org/1999/xhtml">

    < head runat ="server">

    < title ></ title >

    < style type ="text/css">  

    .modalBackground

    {

    /*Classe para deixar o fundo escuro*/

    background-color :Gray ;

    filter :alpha(opacity=70) ;

    opacity :0.7 ;

    .ModalUpdateProgress

    {

    position :absolute

    width : 152px ;

    height : 37px ;

    padding-left :10px ;

    display :table-cell ;

    vertical-align :middle ;

    </ style >

    </ head >

    < body >
    < form id ="form1" runat ="server">

    < asp : ToolkitScriptManager

    ID ="ToolkitScriptManager1" runat ="server">

    </ asp : ToolkitScriptManager >

    < div >

    <% --Panel que será chamado pelomodal-- %>

    < asp : Panel

    ID ="panelUpdateProgress" runat ="server"

    CssClass ="ModalUpdateProgress">

    <% --update Progress-- %>

    < asp : UpdateProgress ID ="UpdateProg1" DisplayAfter ="0" runat ="server">

    < ProgressTemplate >

    < div class ="UpdateProgress">  

    < div

    style =" border-style :solid;

    border-width :thin;

    background-color :White">

    Aguarde...

    </ div >

    </ div >

    </ ProgressTemplate >

    </ asp : UpdateProgress >

    </ asp : Panel >

    <% --Modal popup-- %>

    < asp : ModalPopupExtender

    ID ="ModalProgress"

    runat ="server"

    TargetControlID ="panelUpdateProgress"

    BackgroundCssClass ="modalBackground"

    PopupControlID ="panelUpdateProgress"

    RepositionMode ="RepositionOnWindowResizeAndScroll" >

    </ asp : ModalPopupExtender >

    <% -- javascript para pegar os ids doscontroles-- %>

    <% -- serão utilizados nojsUpdateProgress.js-- %>

    < script type ="text/javascript" language ="javascript">

    var ModalProgress = '<% = ModalProgress.ClientID %> ' ;

    var panelUpdateProgress = '<% = panelUpdateProgress.ClientID %> ' ;

    </ script >

    <% --Javascript que mostra e esconde omodalpopup-- %>

    < script type ="text/javascript" src ="../jsUpdateProgress.js"></ script >

    < asp : UpdatePanel ID ="upPTeste" runat ="server">

    < ContentTemplate >

    < table width ="200px">

    < tr >

    < td >

    < asp : TextBox ID ="tb01" runat ="server"/>

    </ td >

    < td align ="center"> </ td >

    < td >

    < asp : TextBox ID ="tb02" runat ="server"/>

    </ td >

    </ tr >

    < tr >

    < td

    colspan ="2"

    align ="center">

    < asp : Button ID ="btnCalcula"

    runat ="server" Text ="="

    onclick ="btnCalcula_Click"/>

    </ td >

    < td >

    < asp : TextBox ID ="tbResultado" runat ="server"/>

    </ td >

    </ tr >

    </ table >

    </ ContentTemplate >

    </ asp : UpdatePanel >

    </ div >

    </ form >
    </ body >
    </ html >

    JavasCript:

    Fonte do arquivo jsUpdateProgress.js:

    //adiciona função para o início da requisição
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(InicioReq);
    //adiciona função para o final da requisição
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(FimReq);
     
    function InicioReq(sender, args)
    {
      // Exibe o popup com mensagem para aguardar
      $find(ModalProgress).show();
    }
    function FimReq(sender, args) {
     
      //Esconde o popup
      $find(ModalProgress).hide();
    }

    segunda-feira, 28 de maio de 2012 12:58

Respostas

  • Olá João,

    adicione este tributo ao seu asp:ToolkitScripManager

    AsyncPostBackTimeout = "tempo em milisegundos"

    Lembre-se que o tempo é em milisegundos, se quiser calcular use este site

    http://letconversion.com/

    Abraços.


    Leandro de Agostini MCTS - Web Application, Framework 4

    • Marcado como Resposta Harley Araujo quarta-feira, 30 de maio de 2012 12:12
    segunda-feira, 28 de maio de 2012 16:52
  • Olá João,

    uma outra solução poderia ser você criando uma Session logo após o usuário logar no sistema, informar no web.config os atributos dessa Session ex:

    <sessionState mode="InProc" cookieless="false" timeout="30"/>

    e no arquivo global.asx no método

    Session_End

    colocar Session.Abandon();

    Abraços.


    Leandro de Agostini MCTS - Web Application, Framework 4

    • Marcado como Resposta Harley Araujo quarta-feira, 30 de maio de 2012 12:12
    segunda-feira, 28 de maio de 2012 20:05

Todas as Respostas

  • Olá João,

    adicione este tributo ao seu asp:ToolkitScripManager

    AsyncPostBackTimeout = "tempo em milisegundos"

    Lembre-se que o tempo é em milisegundos, se quiser calcular use este site

    http://letconversion.com/

    Abraços.


    Leandro de Agostini MCTS - Web Application, Framework 4

    • Marcado como Resposta Harley Araujo quarta-feira, 30 de maio de 2012 12:12
    segunda-feira, 28 de maio de 2012 16:52
  • Leandro boa tarde,

    Olha se eu colocar esta opcao eu vou estar fixando um tempo, mas iste tempo pode variar muito nao tem como ele ser fixo. Ai eu devo colocar por exemplo 1 hora e se ele acabar antes para caso contrario continua. Mas e se demorar mais que isto?

    Obrigado

    segunda-feira, 28 de maio de 2012 19:01
  • Olá João,

    uma outra solução poderia ser você criando uma Session logo após o usuário logar no sistema, informar no web.config os atributos dessa Session ex:

    <sessionState mode="InProc" cookieless="false" timeout="30"/>

    e no arquivo global.asx no método

    Session_End

    colocar Session.Abandon();

    Abraços.


    Leandro de Agostini MCTS - Web Application, Framework 4

    • Marcado como Resposta Harley Araujo quarta-feira, 30 de maio de 2012 12:12
    segunda-feira, 28 de maio de 2012 20:05