Drucken mit Silverlight V1

Aus meiner letzten Inhouse Silverlight Schulung kam gerade eine Frage per Mail rein. Wie ging das doch grad mit Drucken noch mal? Drucken sollte ja in Zeiten von papierlosen Büro…

Also dann mal kurz zur Einleitung. Für mein Beispiel hole ich Daten aus einem Ria Service. Tabelle ist wie immer Customers aus der Northwind. Angezeigt wird in einem Datagrid. Normalerweise reichen drei Zeilen Code aus, um aus Silverlight mit RIA Services zu sprechen. Ich habe das Beispiel etwas umfangreicher gestaltet, um das Callback Event zu bekommen und auch die Möglichkeit zu haben LINQ Querys abzusenden. So kann man die Daten später auch filtern, sortieren oder pagen.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) 
Handles Button1.Click Dim qry = From c In svc.GetCustomersQuery() Select c Dim lo As LoadOperation = svc.Load(qry) AddHandler lo.Completed, AddressOf loadOp_Completed End Sub Private Sub loadOp_Completed(ByVal sender As Object, ByVal e As EventArgs) Dim lo = CType(sender, LoadOperation(Of Customers)) Dim l As List(Of Customers) l = lo.Entities.ToList() DataGrid1.ItemsSource = l End Sub

Das Drucken selbst ist sehr einfach. Der Benutzer kann auch direkt aus dem Browser, also ohne OOB, drucken.

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
Handles Button2.Click Dim doc As PrintDocument = New PrintDocument() AddHandler doc.PrintPage, AddressOf doc_PrintPage doc.Print("KundenListe") End Sub Private Sub doc_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) e.PageVisual = DataGrid1 End Sub

Es kommt der übliche Druckerdialog des Betriebssystems und das Ergebnis ist ganz genau der gedruckte Dialog.

image

Im nächsten Blog Post werde ich das Beispiel auf mehrseitigen Druck ergänzen und das ganze etwas schöner formatieren.

Pingbacks and trackbacks (1)+

Kommentar schreiben