スクロールしなければ表示されないデータをすべて印刷する
今回は、業務用アプリケーションでは最も使用頻度の高い、DataGridを用いたサンプルを2つ紹介します。1つは印刷処理、もう1つは、フルスクリーンモードのサンプルです。
まず、印刷のサンプルから説明します。前回は、Silverlight 4でサポートされた印刷機能を紹介しました。しかしながら、前回の方法では、 DataGridコントロールのデータ件数が多く一度に表示しきれない場合、画面上に表示されているデータしか印刷できません。
そこで、スクロールしなければ表示されないすべてのデータを印刷できるサンプルを作ってみましょう。
今回は1ページ内に収まるデータを印刷する方法について解説しますが、もちろん、複数ページに渡るデータも印刷できます。また機会があれば紹介していきたいと考えています。
このサンプルのプロジェクト・ファイルは、こちらからダウンロードできます。
今回は、氏名の「読み(先頭の1文字)」あるいは「年齢」でグループ分けしたデータを、DataGridコントロールに表示します(図1、図2)。 一画面には表示しきれない件数のサンプル・データをバインドしていますので、スクロールバーが表示されています。
この画面上から[印刷実行]ボタンをクリックします。Microsoft XPS Document Writerを選択して[印刷]ボタンをクリックし、 DataGridGroup.xpsというファイル名で書き出します。書き出されたXPSファイルをビューアーで閲覧すると、図3のようにDataGridコントロールにバインドしたデータがすべて出力されています。
| 図1:氏名の読み(先頭の1文字)でグループ分けされたデータがDataGridに表示されている。(クリックで拡大) |
|
|
| 図2:年齢でグループ分けされたデータがDataGridに表示されている。 |
|
|
| 図3:DataGridコントロールにバインドされたデータがすべて出力されている。 |
新規プロジェクトの作成と、印刷用データの追加
では、早速サンプルを作成していきましょう。
前回までのサンプル作成時と同様の手順で、新規Silverlight 4プロジェクト(プロジェクト名は「SL4_DataGridGroup」)を作成してください。 プロジェクト依存関係も設定してください。
前回同様、印刷用のサンプル・データ(リスト1)を追加しておきます。このデータはサンプル用のダミーです。 また、このXMLデータを処理するため、「Project/Add Reference」からSystem.Xml.Linqを追加しておきます。
リスト1 DataGridコントロールにバインドするXML文書(sampleData_Group.xml)
<?xml version="1.0"?>
<顧客情報>
<情報>
<氏名>愛媛花子</氏名>
<読み>え</読み>
<年齢>30</年齢>
<住所>松山市道後1-1-1</住所>
<勤務先>道後IT株式会社</勤務先>
</情報>
<情報>
<氏名>夏目団吾</氏名>
<読み>な</読み>
<年齢>56</年齢>
<住所>松山市湯渡2-2-2</住所>
<勤務先>市立松山中学校</勤務先>
</情報>
~<情報></情報>繰り返し、略~
</顧客情報>
著者について
PROJECT KySS
四国のSOHO。薬師寺国安(VBプログラマ)と、薬師寺聖(デザイナ、エンジニア)によるコラボレーション・ユニット。1997年6月、Dynamic HTMLとDirectAnimationの普及を目的として結成。共同開発やユニット名義での執筆活動を行う。XMLおよび.NETに関する著書や連載多数。最新刊は「Silverlight実践プログラミング」両名とも、Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。http://www.PROJECTKySS.NET/





