WPF: Die beste Methode zum Drucken paginierter Datagrids

9

Junge, ich habe eine Ausbildung bekommen, um das zu untersuchen. Ich denke, dass ich von Powerbuilder verwöhnt wurde, der fantastische Funktionen für diese Out-of-the-Box bietet.

Schreibt jemand ernsthaft benutzerdefinierte DocumentPaginator-Objekte, um Berichtsanforderungen für seine LOB-Apps zu erfüllen? Ich möchte "kostenlos" drucken können und muss nicht wie verrückt cracken, nur um was auf dem Bildschirm zu sehen und es auf Papier zu werfen.

Wie machen Leute das? Hat jemand eine empfohlene dritte Partei für das Drucken von größeren Datagrids?

Danke

    
FauxReal 09.06.2010, 20:15
quelle

2 Antworten

1

Das Paginieren von Datagrids ist ein großer, großer Schmerz. Das einfache Zeichnen des Rasters auf einer Seite funktioniert nicht, da Sie z. B. festes Layout, horizontale und vertikale Zellen, alle Daten, Zeilenumbruch, Aufteilen von Spalten und Zeilen in den Seitenrand und Aufteilen von Zellen, die eine Seite überlappen, in mehrere teilen müssen Seiten. Denken Sie daran, dass Sie ein Steuerelement auf einem Blatt Papier nicht scrollen oder seine Größe ändern können. Selbst wenn Sie ein magisches Steuerelement finden, das all dies ermöglicht, wird ein Raster mit Rändern, Schatten und Hintergründen, die auf einem Bildschirm gut aussehen, auf dem Papier nicht gut aussehen.

Für eine alte WinForms-App, die Datagrids druckte, haben wir eine komplett separate Report-API für Ausdrucke implementiert. Wir haben die zugrunde liegende ADO.Net-Datenquelle mit dem kostenlosen Steuerelement ReportViewer gedruckt. Ein Lernprogramm befindet sich auf goreportviewer.com .

    
Dour High Arch 09.06.2010 20:30
quelle
0

Ich fand den einfachsten Weg, eine verallgemeinerte DocumentPaginator-Klasse zu implementieren, um alles paginieren zu können, was ich auf den Bildschirm bringen kann. Mit meinem DocumentPaginator muss ich mir keine Gedanken über das Drucken machen, da ich jedes beliebige WPF-Steuerelement übernehmen und dem Drucken zuweisen kann. Bei Bedarf werden mehrere Seiten benötigt, um alle Daten anzuzeigen.

Ich verwende auch eine geerbte angehängte Bool-Eigenschaft "PrintView", die der Benutzer steuern kann. Einige meiner Steuerelemente ändern ihr Erscheinungsbild etwas, indem sie einen Trigger für die Eigenschaft "PrintView" verwenden, damit sie beim Drucken besser aussehen.

Ich beschreibe meine DocumentPaginator-Lösung detaillierter in dieser Antwort , einschließlich einer Beschreibung des erforderlichen Algorithmus.

    
Ray Burns 10.06.2010 05:44
quelle

Tags und Links