Laden...

Ausdruck eines DataGrid mit grossen Dimensionen und mehreren Seiten

Letzter Beitrag vor 8 Jahren 4 Posts 1.380 Views
Ausdruck eines DataGrid mit grossen Dimensionen und mehreren Seiten

Ich möchte ein DataGrid ausdrucken, falls es grosse Dimensionen aufweist, auf mehrere Seiten verteilt.
Ich habe es so versucht, indem ich auf die Controls der Zellen des DataGrid zugreife und diese dann in ein FixedDocument übernehme.


            for (int row = rowStart; row < rowEnde; row++)
            {
                var item = objectToPrint.Items[row]; 
                width = this._oPrintDefintions.MarginLeft;
                // Zellen der Zeile schreiben
                for (int col = colStart; col < colEnde; col++)
                {
                    var element = objectToPrint.Columns[col].GetCellContent(item);
                    ......

Das funktioniert sehr gut. Nur, ich kann nur die "Elemente" abholen, die im Control aktuell angezeigt werden. Bei den "versteckten" Zellen gibt es diese Elemente nicht.
Das ist schade, denn sonst könnte ich die aufbereiteten Werte der Zelle übernehmen und gleich in das Dokument schreiben. Falls ich dies nicht benutzen kann, müsste ich fast die gesamte Logik des DataGrid-Control nachbauen.
Ich gehe mal davon aus, dass das DataGrid optimiert arbeitet und nur die Zellen aufbereitet, welche auch angezeigt werden.
Stimmt dies? Kann ich dies irgendwie übersteuern?
Kennt sich jemand so tief mit dem DataGrid-Conrol aus?
Danke für eure Hilfe...

Moin,
das DataGrid hat die Eigenschaften EnableColumnVirtualization und EnableRowVirtualization.
Diese sollten für deinen Fall false sein.

Edit:
Gehört das nicht eigentlich noch mit hierzu: WPF-DataGrid mit einem Scrollviewer komplett ausdrucken, nicht nur sichtbarer Bereich?

Hallo BJA-CH,

Als alternative zum DataGrid, kannst Du auch Deinen kompletten Datensatz via z.B. openXML in ein Word oder Excel einfügen und dann ausdrucken.

Auch direkt ein PDF-erstellen ist über entsprechende Klassen möglich.

Gruss Lhyn

Hoi BJA-CH

Wen du die Datan nicht aus aus dem Daatagrid, sonder aus der Tabelle und oder einer ObsevabelnCololection<T> holst, kanst du die Daten nach deinen eigenen Vorstellungen filten und sortieren.

Gruss Alex