none
ASP.NET Control - RenderControl RRS feed

  • Frage

  • Hallo zusammen,
    ich habe ein System.Web.UI.Control das eine ASP-Table rendert:

    protected

     

    override void CreateChildControls(){
    .....code um asp-table zu erzeugen...
    myTable.AllpyStyle((TableItemStyle)myCellStyle)
    Controls.Add(myTable)
    }

    ... Soweit klappt es wunderbar und liefert mir passendes HTML zum Browser.

    Im nächsten Schritt benötige ich das erzeugte HTML, um verschiedene weitere Sachen damit zu machen (PDF drucken).
    public void Print()
    {

    sb =

    new StringBuilder();
    sw =
    new System.IO.StringWriter(sb);
    hw =
    new Html32TextWriter(sw);
    myTable.RenderControl(hw);

    MthodezumPDFDrucken(hw.innerWriter.ToString());
    }

    Diese Methode liefert mir ein komplett anderes HTML zurück.
    Aus Stylesheet Attributen wie font-size:12pt; wird ein Font-Tag: <font size="2">...
    Das ist für mich nicht akzeptabel.
    Hat jemand eine Ahnung wie ich an das HTML Rendering komme, wie es an den Browser (z.B. IE8) gesendet wird?


    Viele Grüße,
    Mansur
    Donnerstag, 5. November 2009 06:36

Antworten

Alle Antworten

  • Logisch. Die Html32TextWriter Klasse generiert HTML 3.2 kompatibles HTML. Versuche es mal mit der HtmlTextWriter Klasse

    HtmlTextWriter Class
    http://msdn.microsoft.com/en-us/library/system.web.ui.htmltextwriter.aspx

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    • Als Antwort markiert Mansur Esmann Donnerstag, 5. November 2009 07:15
    Donnerstag, 5. November 2009 06:52
    Beantworter
  • Hallo,

    vielen Dank dafür. Das war der Grund.
    Darüber hinaus vielleicht noch einen Ratschlag den ich über diesen Weg bekommen kann?

    Die ASP:Table führt eigentlich style-Attribute: page-break-before:allways an verschiedenen Zeilen (In der ersten Zelle).
    Diese werden aber leider nicht korrekt ausgeführt (Hängt z.T. an sehr unübersichtlcihen Situationen wie: Wenn Border <2 - dann geht es, ansonsten nicht)

    Ich suche nach einer einfachen Lösung die Table an den Zeilen wo das Pagebreak steht in zwei Tabellen zu zerteilen.
    Bisher ist mir nur .. "durch die Tabelle iterieren und neue Tabellen aufbauen", oder "den myHtmlTextWriter.innerWriter mittels RegEx zu manipulieren" eingefallen. Gibt es da vielleicht noch was praktischeres?

    Mansur Esmann
    Donnerstag, 5. November 2009 07:22