2011-12-09 9 views
1

私は、ヘッダー、単純なグループ化のテーブルとフッターを含む簡単なレポートを作成する必要があるプロジェクトに取り組んでいます。このレポートは印刷機能を必要とし、複数のページにすることができます。 複数ページのPrintDocumentを生成して印刷することができないため、DataGridを使用してこのレポートを作成することは本当に難しいことが分かりました。 これまでのところ、TelerikのHTMLPlaceHolderを使用してiframeを使用しようとしましたが、HTMLレポートの後ろにsilverlightコードを使用して生成しましたが、javascriptの印刷機能はsilverlightページ全体を印刷します。 私はtelerikを持っており、事前レポートに使用していますが、レポートがサーバー上で生成されているので、この特定のレポートに対してtelerikレポートを使用したくありません(このためにサーバーに値を戻したくない報告する)。Silverlightでのクライアントサイドレポートの生成と印刷

印刷機能を備えたクライアント側でこのようなレポートを生成する方法はありますか。

私は(最高$ 100)

あなたはより多くの詳細が必要な場合は私に知らせている限り、それはあまりにも高価ではありませんように、すべての提案に開いています。

答えて

1

SilverlightでPrintDocumentクラスを使用すると便利です。使用方法は、XAMLファイル内

<ScrollViewer Height="300" VerticalScrollBarVisibility="Auto"> 
     <ItemsControl x:Name="printSurface"> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal" 
       Height="25"> 
         <TextBlock Width="100" 
       Text="{Binding Name}" /> 
         <TextBlock Width="75" 
       Text="{Binding Genre.Name}" /> 
         <TextBlock Width="50" 
       Text="{Binding Price, StringFormat=c}" /> 
        </StackPanel> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 
    </ScrollViewer> 

としてリストを作成し、コードの後ろに

void printButton_Click(object sender, RoutedEventArgs e) 
    { 
      PrintDocument doc = new PrintDocument(); 
      doc.PrintPage += new EventHandler<PrintPageEventArgs>(doc_PrintPage); 
      doc.Print("Page title"); 
    } 

    void doc_PrintPage(object sender, PrintPageEventArgs e) 
     { 
     // Stretch to the size of the printed page 
     printSurface.Width = e.PrintableArea.Width; 
     printSurface.Height = e.PrintableArea.Height; 

     // Assign the XAML element to be printed 
     e.PageVisual = printSurface; 

     // Specify whether to call again for another page 
     e.HasMorePages = false; 
    } 
のように見える...のようです
関連する問題