Feedback

WebControl in einen String rendern.

Sprache: C#

Hier eine Methode, um ein WebControl, oder ein HtmlControl in einen String zu render
public string RenderControl2String(Control ctrl)
{
  System.Text.StringBuilder sb = new System.Text.StringBuilder();
  System.IO.StringWriter sw = new System.IO.StringWriter(sb);
  System.Web.UI.HtmlTextWriter tw = new HtmlTextWriter(sw);
  ctrl.RenderControl(tw);
  return sb.ToString();
}
public string RenderControl2String(Control ctrl)
{
  System.Text.StringBuilder sb = new System.Text.StringBuilder();
  System.IO.StringWriter sw = new System.IO.StringWriter(sb);
  System.Web.UI.HtmlTextWriter tw = new HtmlTextWriter(sw);
  ctrl.RenderControl(tw);
  return sb.ToString();
}

2 Kommentare

  1. Guten Abend,

    Ich habe in Visual Studio 2005 eine .aspx Seite auf dem sich ein Panel mit Controls befinden (Controlbox und sämtliche Textfelder)

    Diese Methode hier mit Hilfe der PDf Komponente iText, gibt mir die Inhalte der Controls (also den Text) in einer PDF Datei wieder (siehe unten). Jedoch möchte ich, dass in dieser PDF Datei auch die Controls erscheinen und nicht nur der jeweilige Inhalt.

    Wie muss ich denn meinen Code umändern damit das klappt?
    Reicht es, wenn ich mein Panel rendere oder muss ich die ganzen Controls rendern? ich weiß einfach nicht wie ich meinen Code umändern muss, damit es klappt und hoffe, dass ihr mir helfen könnte.

    Danke

    Protected Sub makePDF(ByVal filename As String)

    Dim Document As Document = New Document()

    Dim writer As PdfWriter = New PdfWriter

    Dim fontHelv As Font = New Font(Font.HELVETICA, 12, Font.NORMAL)

    Dim cb As PdfContentByte

    Dim bf As BaseFont

    writer = PdfWriter.getInstance(Document, New FileStream(filename, FileMode.Create))

    Document.setMargins(43, 0, 35, 0)

    Document.open()

    Document.add(New Paragraph(48, “ “ + Label1.Text, fontHelv))

    Document.add(New Paragraph(38, lblAngabenZumNeuger„t.Text, fontHelv))

    cb = writer.getDirectContent()

    bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)

    cb.setFontAndSize(bf, 7)

    cb.beginText()

    cb.setTextMatrix(480, 760)

    cb.showText(lblId.Text)