【问题标题】:Checkbox Issues- Checboxes not show when export to pdf复选框问题 - 导出为 pdf 时复选框不显示
【发布时间】:2016-02-04 18:35:51
【问题描述】:

我想在使用 C# 导出为 PDF 时显示复选框。我也用

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.
        }
    }
}

【问题讨论】:

  • 如何导出为 PDF?表单上是否存在任何复选框?能否展示您的完整源代码,以便我们更好地帮助您
  • 你的方法体是空的,试着放点东西
  • not work永远足以解释问题的信息。您甚至都没有展示您的实际工作以及您尝试解决问题的方法。
  • 显示您的代码以及您遇到的错误或遇到的障碍

标签: c# asp.net .net pdf itextsharp


【解决方案1】:
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);
            }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 2018-11-14
    相关资源
    最近更新 更多