2010-06-09 3 views
9

Garçon ai-je reçu une formation sur ce sujet? Je suppose que j'ai été gâté par Powerbuilder, qui a une fonctionnalité fantastique pour ce hors de la boîte. Est-ce que quelqu'un écrit sérieusement des objets personnalisés de documentpaginator pour gérer les besoins de reporting pour leurs applications métier? Je veux être en mesure d'imprimer "gratuitement" et ne pas avoir à coder comme un fou juste pour prendre ce qui est sur l'écran et le jeter sur papier.WPF: Meilleure méthode pour imprimer des paginés paginés

Comment les gens font-ils cela? Est-ce que quelqu'un a une tierce partie recommandée pour permettre l'impression de grandes quantités de données?

Merci

+0

Cette réponse peut également être utile: http://stackoverflow.com/questions/2990727/net-library-for-drawing-tables-with-gdi –

+0

duplication possible de [Quelle est la meilleure approche pour l'impression/reporting de WPF ?] (http://stackoverflow.com/questions/180746/whats-the-best-approach-to-printing-reporting-from-wpf) –

Répondre

1

Pagination datagrids est un énorme, énorme douleur. Dessiner simplement la grille sur une page ne fonctionne pas car vous devez gérer des éléments tels que la disposition fixe, agrandissant les cellules horizontalement et verticalement pour afficher toutes les données, encapsuler les mots, diviser les colonnes et les lignes dans la marge, diviser les cellules pages Rappelez-vous que vous ne pouvez pas faire défiler ou redimensionner un contrôle sur une feuille de papier. Même si vous trouvez un contrôle magique qui peut faire tout cela, une grille avec des bordures, des ombres et des arrière-plans qui ont l'air bien sur un écran ne sera pas belle sur le papier.

Dans le cas d'une ancienne application WinForms qui affichait des datagrids, nous avons implémenté une API de rapport complètement distincte pour les impressions. Nous avons imprimé la source de données ADO.Net sous-jacente en utilisant le contrôle ReportViewer libre. Un tutoriel est à gotreportviewer.com.

+0

merci pour cela. Idéalement, je voudrais identifier un contrôle gridstyle sur lequel il y a une méthode d'impression. Nous utilisons LINQ to SQL pour ce projet jusqu'à présent. – FauxReal

+0

@FauxReal: Si vous pouvez trouver un contrôle qui peut le faire, faites le moi savoir. J'ai ajouté plus de détails à ma réponse pour savoir pourquoi je crois que vous n'en trouverez pas. –

+2

Bien le contrôle de grille de Xceed imprimera des grilles comme des fous. Est-ce un excellent travail aussi. Ne répondra pas à tous les besoins de rapports imaginables, mais rendra les grilles d'impression géniales. – FauxReal

0

J'ai trouvé le moyen le plus simple d'implémenter une classe DocumentPaginator généralisée pour paginer tout ce que je peux mettre à l'écran. Avec mon DocumentPaginator, je n'ai pas besoin de m'inquiéter de l'impression car je peux prendre n'importe quel contrôle WPF arbitraire et lui dire d'imprimer, et il faudra plusieurs pages si nécessaire pour afficher toutes les données.

J'utilise également une propriété booléenne héritée "PrintView" que l'utilisateur peut contrôler. Certains de mes contrôles changent quelque peu leur apparence à l'aide d'un déclencheur sur la propriété "PrintView", de sorte qu'ils seront plus beaux lorsqu'ils seront imprimés.

Je décris ma solution DocumentPaginator plus en détail in this answer, y compris une description de l'algorithme requis.

Questions connexes