2010-08-05 7 views
1

클릭 이벤트가 발생하면 사용중 메시지를 표시하기 위해 jQuery BlockUI Plugin을 사용 중입니다.열기/다른 이름으로 저장 대화 상자가 표시된 후 jQuery BlockUI 플러그인으로 UI 잠금 해제

아래 시나리오에서 문제가 없습니다. 사용중인 메시지는 클릭 이벤트에서 UI를 표시하고 잠그고 다시 게시가 완료되면 사라집니다.

대화 상자에서 브라우저 열기/저장을 호출 관련 없음 파일 생성을

마크 업 : 뒤에

$(function() { // when document has loaded 

    ($.unblockUI); //unlock UI 

    //Show busy message on click event and disable UI 
    $('#btnDemo').click(function() { 
    $.blockUI({ message: '<h3>Please wait...</h3>' }); 

    }); 

}); 

<asp:Button ID="btnDemo" runat="server" Text="Hello World" /><br/> 

코드 :

Protected Sub btnDemo_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnDemo.Click 
     Label1.Text = "Hello World" 
     Threading.Thread.Sleep(6000) 
    End Sub 
이제

, 문제는입니다. 파일 생성이 관련되어 있으며 브라우저 열기/다른 이름으로 저장 대화 상자를 호출합니다. 사용 중 메시지는 클릭 이벤트에서 UI를 표시하고 잠그지 만 다시 게시가 완료되고 사용자가 파일을 저장할 때 UI가 사라지고 잠금 해제되지 않습니다.

마크 업 :

$(function() { // when document has loaded 

    ($.unblockUI); //unlock UI 

    //Show busy message on click event and disable UI 
    $('#btnCreateFile').click(function() { 
    $.blockUI({ message: '<h3>Please wait...</h3>' }); 

    }); 

}); 

<asp:Button ID="btnCreateFile" runat="server" Text="Create File" /><br/> 

코드 숨김

Protected Sub btnCreateFile_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCreateFile.Click 

    Dim filename As String = "demo.xls" 
    Response.ContentType = "application/vnd.ms-excel" 
    Response.AddHeader("Content-Disposition", String.Format("attachment;filename={0}", filename)) 
    Response.Clear() 

    Response.[End]() 

    End Sub 

내가 원하는 바쁜 메시지를 제거하고 열기/저장 대화 상자가 나타납니다 때 UI의 잠금을 해제하세요.

답변

0

여기에 같은 질문을했습니다 : Unblock (jQuery BlockUI) after file sent to browser through response stream (답변 없음).

나는 생각하지 않는다. 내가 볼 수있는 것은 분명히 페이지를 다시 볼 수 있지만 응답은 파일 스트림이므로 페이지가 다시로드되지 않으므로 클라이언트 측 이벤트가 페이지를 시작하지 않게됩니다. 림보.

대부분의 자습서에서는 파일을 만들고 클라이언트를 '다운로드 페이지'로 리디렉션하는 것이 좋습니다. 잠재적으로 iFrame을 통해 모든 작업을 수행 할 수 있습니다. 그래서 포스트 백, 파일 생성, document.ready에서 실행할 클라이언트 사이트 jquery를 설정하여 다음과 같은 src가있는 iFrame을 작성하십시오. /downloadFile.aspx?fileID=blah

대화 상자는 여전히 정상적으로 나타나야하지만 이제 UI 차단 해제를 제어 할 수 있습니다.

0

자바 스크립트 :

$(document).ready(function() { 
    $('#create_pdf_form').submit(function() { 
     blockUIForDownload(); 
    }); 
    }); 

    var fileDownloadCheckTimer; 
    function blockUIForDownload() { 
    var token = new Date().getTime(); //use the current timestamp as the token value 
    $('#download_token_value_id').val(token); 
    $.blockUI(); 
    fileDownloadCheckTimer = window.setInterval(function() { 
     var cookieValue = $.cookie('fileDownloadToken'); 
     if (cookieValue == token) 
     finishDownload(); 
    }, 1000); 
    } 

서버 측 : 여기

var response = HttpContext.Current.Response; 
response.Clear(); 
response.AppendCookie(new HttpCookie("fileDownloadToken", downloadTokenValue); //downloadTokenValue will have been provided in the form submit via the hidden input field 
response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", desiredFileName)); //desiredFileName will be whatever the resutling file name should be when downloaded 

//Code to generate file and write file contents to response 

response.Flush(); 

해상도에 대한 링크입니다.

http://geekswithblogs.net/GruffCode/archive/2010/10/28/detecting-the-file-download-dialog-in-the-browser.aspx

BR, 르네이

+0

당신은 경우는 고장, URL에 대한 간략한을 수행해야합니다. –

+0

어떤 서비스를 사용해야합니까? (권장합니까?) –

+0

귀하의 URL에서 중요한 것을 복사하여 붙여 넣으십시오. –