2011-11-18 60 views
1

我使用Itext Sharp爲按鈕單擊在我網站上的現有訂單創建PDF。它已被添加爲Sharepoint網站上的Web部件。使用Itext Sharp生成PDF後,單擊按鈕,另一個按鈕單擊同一頁面,將不會觸發

在同一頁上,有許多服務器控件的另一個Web部件。但是,當我點擊任何按鈕時,按鈕點擊事件不會觸發。只有當我刷新頁面時,事件纔會被觸發。

我無法同時創建pdf,然後立即單擊另一個按鈕而不刷新頁面。我不明白我做錯了什麼。

以下是我的代碼。

protected void PdfGenerate_OnClick(object sender, EventArgs e) 
    { 
     Font Arial = FontFactory.GetFont("Arial", 12, BaseColor.BLACK); 
     string imagename = "AAlogo.gif"; 
     string imagepath = Page.Server.MapPath("/_layouts/Images/ImagesFolder/Image1.gif") ; 

     using (var ms = new MemoryStream()) 
     { 
      using (var document = new Document(PageSize.A4,50,50,15,15)) 
      { 
       PdfWriter.GetInstance(document, ms); 
       document.Open(); 
       Paragraph img = new Paragraph(); 
       Image aaImg = iTextSharp.text.Image.GetInstance(imagepath); 
       img.Add(aaImg); 
       img.IndentationRight = 5f; 
       //code to add all the elements here 
       PdfPTable table = new PdfPTable(3); 
       PdfPCell col1 = new PdfPCell(new Phrase("oRDER Number")); 
       table.AddCell(col1); 
       // code for the table... 
        document.Add(table); 
       } 
      document.Close(); 
      } 
      Response.Clear(); 
      Response.ContentType = "application/octet-stream"; 
      Response.AddHeader("content-disposition", "attachment;filename= Order Number" + .pdf"); 
      Response.Buffer = true; 
      Response.Clear(); 
      var bytes = ms.ToArray(); 
      Response.OutputStream.Write(bytes, 0, bytes.Length); 
      Response.OutputStream.Flush(); 
     } 

    } 

回答

2

當您清除並刷新響應時,您正在中斷/中止asp.net的頁面生命週期。最好將該下載部分放入另一個文件(單獨文件的Page_Load)並從當前頁面調用它。更多信息:++

相關問題