2015-06-15 1 views
-1

У меня есть spgridview и вы хотите экспортировать его содержимое в pdf. Я использую itextsharp для того же самого. Но ошибка возникает при вызове rendercontrol. Я уже пробовал решения, упомянутые ниже. Question Кроме того, я попытался с помощьюControl 'testGridview' типа 'SPGridView' должен быть помещен внутри тега формы с помощью runat = server

public override void VerifyRenderingInServerForm(Control control) 
{ 
return; 
} 

но оленья кожа работа beacuse Я пишу код в UserControl. Вот мой код ascx.

<SharePoint:SPGridView ID="domainGridview" AllowPaging="false" runat="server" AutoGenerateColumns="False" 
ShowHeader="true" ShowHeaderWhenEmpty="true" AllowSorting="True" GridLines="None" EnabledEventValidation="false"> 
<AlternatingRowStyle CssClass="ms-alternating" /> 
<Columns> 
<SharePoint:SPBoundField DataField = "SiteName" HeaderText = "Team Site Name" SortExpression = "SiteName"></SharePoint:SPBoundField> 
<asp:BoundField DataField = "SiteUrl" HtmlEncode="false" HeaderText = "Team Site URL" SortExpression = "SiteUrl" ></asp:BoundField> 
</Columns> 
</SharePoint:SPGridView> 

<asp:Button ID="btnExport" runat="server" Text="Export" OnClick="btnExport_Click" /> 

Это мой usercontrol.ascx.cs код

protected void btnExport_Click(object sender, EventArgs e) 
    { 

     StringWriter sw = new StringWriter(); 
     HtmlTextWriter hw = new HtmlTextWriter(sw); 

     UserControl myControl = (UserControl)LoadControl("DomainUserWebPartUserControl.ascx"); 
     domainGridview.RenderControl(hw); 

     Response.ContentType = "application/pdf"; 
     Response.AddHeader("content-disposition", 
      "attachment;filename=DataTable.pdf"); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 



     StringReader sr = new StringReader(sw.ToString()); 
     Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f); 
     HTMLWorker htmlparser = new HTMLWorker(pdfDoc); 
     PdfWriter.GetInstance(pdfDoc, Response.OutputStream); 
     pdfDoc.Open(); 
     htmlparser.Parse(sr); 
     pdfDoc.Close(); 
     Response.Write(pdfDoc); 
     Response.End(); 
    } 

Это исключение я получаю

Control 'ctl00_m_g_70a6af81_243a_45cf_a88e_3760d013ca12_ctl00_domainGridview' типа 'SPGridView' должен быть размещен внутри form tag с runat = server.

+0

Не знаете, почему вопрос получил downvoted? Я должен знать причину, я думаю – Deepika

ответ

0

Наконец-то я получил свое решение. Я использую другой подход alltogether.

protected void btnExport_Click(object sender, EventArgs e) 
    { 
     dtUIExport = GetData(); 
     //Creating iTextSharp Table from the DataTable data 
     PdfPTable pdfTable = new PdfPTable(dtUIExport.Columns.Count - 1); 

     pdfTable.DefaultCell.BorderWidth = 2; 
     int[] widths = new int[dtUIExport.Columns.Count - 1]; 
     //setting font 
     BaseFont bf = BaseFont.CreateFont(Environment.GetEnvironmentVariable("windir") + @"\fonts\ARIALUNI.TTF", BaseFont.IDENTITY_H, true); 

     //setting width 
     for (int x = 0; x < domainGridview.Columns.Count -1; x++) 
     { 
      widths[x] = (int)domainGridview.Columns[x].HeaderText.Length + 100;    
     } 
     pdfTable.SetWidths(widths); 

     //setting headers 
     for (int i = 0; i < dtUIExport.Columns.Count; i++) 
     { 
      if (i == 1) 
      { continue; } 
      iTextSharp.text.Font font = new iTextSharp.text.Font(bf, 10, iTextSharp.text.Font.NORMAL); 
      font.Color = new BaseColor(domainGridview.HeaderStyle.ForeColor); 
      string cellText = Server.HtmlDecode(dtUIExport.Columns[i].ToString());    
      iTextSharp.text.pdf.PdfPCell cell = new PdfPCell(new Phrase(12, cellText, font)); 
      pdfTable.AddCell(cell);  
     } 

     //copying the data to pdftable 
     for (int i = 0; i < dtUIExport.Rows.Count; i++) 
     { 
      for (int j = 0; j < dtUIExport.Columns.Count; j++) 
      { 
       if (j == 1) 
       { continue; } 

        string cellText = Server.HtmlDecode(dtUIExport.Rows[i][j].ToString()); 
        iTextSharp.text.Font font = new iTextSharp.text.Font(bf, 10, iTextSharp.text.Font.NORMAL); 
        font.Color = new BaseColor(domainGridview.RowStyle.ForeColor); 
        iTextSharp.text.pdf.PdfPCell cell = new iTextSharp.text.pdf.PdfPCell(new Phrase(12, cellText, font)); 
        pdfTable.AddCell(cell); 
      } 
     } 
     //creating the PDF DOC 
     Document pdfDoc = new Document(PageSize.A2, 10f, 10f, 10f, 0f); 
     PdfWriter.GetInstance(pdfDoc, Response.OutputStream); 
     pdfDoc.Open(); 
     pdfDoc.Add(pdfTable); 
     pdfDoc.Close(); 

     Response.ContentType = "application/pdf"; 
     Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf"); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.Write(pdfTable); 
     Response.End(); 
    }   
} 
Смежные вопросы

 Смежные вопросы