2016-06-27 5 views
-2

Ich arbeite in ASP.NET MVC-Anwendung (Rasierer), die Kendo UI verwendet. Ich sollte einen Bericht anzeigen, wenn der Kunde auf die Schaltfläche klickt. Aber der Bericht ist nicht so schnell, und ich sollte eine Meldung im Popup-Fenster für den Client anzeigen, etwa so: "Bericht wird erstellt - in einem Moment wird ein neues Fenster mit Ergebnissen angezeigt". Wie zeige ich das Popup-Fenster mit der Nachricht an? Und wo im Code? Bitte sehen Sie den Code, den ich verwende. Die Taste ist:Popup-Fenster mit Nachricht in ASP.NET MVC-Anwendung

<a class="k-button k-button-icontext k-grid-Patient" id="hrefAllCheckedPatientsRep" style="display:none;" href="#" onclick="getAllChecked();">Generate Report</a>&nbsp; 

Diese Funktion ist getAllChecked() in JavaScript:

function getAllChecked() { 
     $('#checkedMsgRep').text('');  

     $.ajax({ 
      type: "POST", 
      url: "/PatientReport/ExportToPDF", 
      dataType: "json", 
      traditional: true, 
      data: { uniqueIds: checkedArray }, 
      success: function (data) { 
       if (data.success) { 
        // $('#lnkPdfDownload').show(); 
        //$('#lnkPdfDownload').attr('href', '/PatientReport/DownloadFile' + '?fName=' + data.fName); 
        $('#myFrame').attr('src', '/PatientReport/DownloadFile' + '?fName=' + data.fName); 
       } else { 
        //$('#lnkPdfDownload').hide(); 
       } 

      }, 
      error: function (jqXHR, textStatus, errorThrown) { 
       $('#checkedMsgRep').text('@ELSORegistry.Resources.Views.Patient.PatientStrings.CheckedError').show(); 
       $('#hrefCheckedPatientsRep').blur(); 
      } 
     }); 
     } 

im Controller Ich habe eine Aktion:

[AcceptVerbs(HttpVerbs.Post)] 
      public ActionResult ExportToPDF(List<String> uniqueIds) { 
      // step 1: creation of a document-object 
       var document = new Document(PageSize.A4.Rotate(), 3, 3, 80, 50); 
//Here is the code for export to pdf 
// Add table to the document 
      document.Add(dataTable); 

      //This is important don't forget to close the document 
      document.Close(); 

     byte[] byteInfo = output.ToArray(); 
     output.Write(byteInfo, 0, byteInfo.Length); 
     output.Position = 0;   


     var fName = string.Format("File-{0}.pdf", DateTime.Now.ToString("s")); 
     Session[fName] = output; 

     return Json(new { success = true, fName }, JsonRequestBehavior.AllowGet); 

    } 

usw.

Die andere Aktion in Contoller ist:

public ActionResult DownloadFile(string fName) 
     { 
      var ms = Session[fName] as MemoryStream; 
      if (ms == null) 
       return new EmptyResult(); 
      Session[fName] = null; 
      return File(ms, "application/pdf", fName); 
     } 

Antwort

1

Verwenden Sie diesen Code, um ein div mit Nachricht zu erstellen.

<div id="effect" class="ui-widget-content ui-corner-all">  
<p>Loading Files...</p> 
</div> 

Verwenden Sie die Funktion show, um das Popup in Ihrer JavaScript-Funktion anzuzeigen.

function getAllChecked() {$("#effect").show(selectedEffect, options, 500, callback);} 

Und in den Ajax-Erfolg verstecken Sie das Popup.

success: function (data) { 
      if (data.success) {$("#effect:visible").removeAttr("style").fadeOut();} 

hoffe das hilft.

+0

Vorschlag: Anstatt Popup zu verwenden, verwenden Sie ein Lade-GIF-Bild, das Sie einfach ein- und ausblenden können. Sie können das Bild beim Generieren der Schaltfläche "Bericht erstellen" anzeigen und im einfachen Ajax-Erfolg ausblenden, indem Sie jQuery verwenden. –

+0

Danke, es funktioniert gut :) – alenan2013

Verwandte Themen