2015-11-04 37 views
-5

我想在使用C#导出为PDF时显示复选框。我也使用复选框问题 - 导出为pdf时未显示Checboxes

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

我试图解决我的问题..但代码只赋予复选框的值意味着真或假。这是我所有的代码,我至今尝试过...

protected void btnExport_Click(object sender, EventArgs e) 
{ 
    PrepareControlForExport(Vesseldetail); 
    Response.ContentType = "application/pdf"; 
    Response.AddHeader("content-disposition", "attachment;filename=Export.pdf"); 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    StringWriter sw = new StringWriter(); 
    HtmlTextWriter hw = new HtmlTextWriter(sw); 
    HtmlForm frm = new HtmlForm(); 
    Vesseldetail.Parent.Controls.Add(frm); 
    frm.Attributes["runat"] = "server"; 
    frm.Controls.Add(Vesseldetail); 
    frm.RenderControl(hw); 
    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(); 

} 

private static void PrepareControlForExport(Control control) 
{ 
    for (int i = 0; i < control.Controls.Count; i++) 
    { 
     Control current = control.Controls[i]; 
     if (current is LinkButton) 
     { 
      control.Controls.Remove(current); 
      control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text)); 
     } 
     else if (current is ImageButton) 
     { 
      control.Controls.Remove(current); 
      control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText)); 
     } 
     else if (current is HyperLink) 
     { 
      control.Controls.Remove(current); 
      control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text)); 
     } 
     else if (current is DropDownList) 
     { 
      control.Controls.Remove(current); 
      control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text)); 
     } 
     else if (current is CheckBox) 
     { 
      control.Controls.Remove(current); 
      control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? " True" : " False")); 
      current.Visible = true; 

     } 

     if (current.HasControls()) 
     { 
      pdfconverter.PrepareControlForExport(current); //pdfconverter is class. 
     } 
    } 
} 
+0

你如何导出为PDF?表单上是否存在任何复选框?你可以显示你的完整的源代码,以便我们可以更好地帮助你 – koolprasad2003

+0

你的方法体是空的,试着把东西放在那里 – hellogoodnight

+1

_not work_是**从来没有**足够的信息来解释一个问题。你还没有展示你的真实工作,你有什么试图解决你的问题。 –

回答

0
static string path; 
    path = Server.MapPath("~/Styles/images/"); 
    private static void PrepareControlForExport(Control control) 
    { 
     for (int i = 0; i < control.Controls.Count; i++) 
     { 
      Control current = control.Controls[i]; 
      if (current is LinkButton) 
      { 
       control.Controls.Remove(current); 
       control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text)); 
      } 
      else if (current is ImageButton) 
      { 
       control.Controls.Remove(current); 
       control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText)); 
      } 
      else if (current is HyperLink) 
      { 
       control.Controls.Remove(current); 
       control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text)); 
      } 
      else if (current is DropDownList) 
      { 
       control.Controls.Remove(current); 
       control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text)); 
      } 
      else if (current is CheckBox) 
      { 
       control.Controls.Remove(current); 
       control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "<br><img src='" + path + "checked.png' alt=''width='15' height='15' float='right' />" : "<br><img border='10' src='" + path + "unchecked.png' alt=''width='15' height='15' float='right' />")); 

       current.Visible = true; 

      } 

      if (current.HasControls()) 
      { 
       VesselDetails.PrepareControlForExport(current); 
      } 
     } 
    }