ReportViewer for ASP.NET Web Forms
新機能

True WinReports for .NET 3.0J(C1Report)では、次の新しい機能が追加されました。

パラメータのカスタマイゼーション

InitializeParametersDialog イベントを使用してパラメータのカスタマイゼーションが可能になりました。

たとえば、以下のコードは InitializeParametersDialog を使用してレポートのパラメータの値を変更し、パラメータダイアログの表示を抑えます。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Private Sub c1Report1_InitializeParametersDialog(sender As Object, e As C1.Win.C1Report.DialogEventArgs)
   ' パラメータ値を変更する
    Dim p As ReportParameterCollection = e.Parameters
    p("TheString").Value = "east"
    p("TheNumber").Value = 12
    p("TheDate").Value = DateTime.Now
    p("TheBool").Value = True
  
    ' ダイアログを表示しない
    e.ShowDialog = False
End Sub


C# コードの書き方

C#
コードのコピー
private void c1Report1_InitializeParametersDialog(object sender, C1.Win.C1Report.DialogEventArgs e)
{
    // パラメータ値を変更する
    C1.Win.C1Report.ReportParameterCollection p = e.Parameters;
    p["TheString"].Value = "east";
    p["TheNumber"].Value = 25;
    p["TheDate"].Value   = DateTime.Today;
    p["TheBool"].Value   = true;
    // ダイアログを表示しない 
    e.ShowDialog = false;
}

スクリプト関数

GroupPage および GroupPages スクリプト関数によってグループ内の現在のページ番号とグループ内の全ページ数の報告が可能になりました (例えば、“グループ US の売り上げ(ページ2/4))。以前のバージョンでは、そうするのにレポートを二回出力する必要がありました。最初はグループごとのページ数を計算するためと二回目はレポートを出力するためでした。

エクスポートフィルタ

C1dFilter クラスによって連載されたC1PrintDocument を含む .c1d ファイルの作成またはそんな文書を含むストリームの作成が可能です。C1PrintDocument に関するより詳しい情報については C1Preview コンポーネントのヘルプを参照してください。

C1dFilter を実行する際には C1Preview のアセンブリが必要ありません。ただし、後ほどC1PrintDocumentをプレビュー/印刷するためには C1Preview が必要になります。

以下のコードはレポートをC:\myReport.c1d に出力します。この場合は、C1.C1Preview.2 および C1.Win.C1Preview.2 アセンブリは必要ありません。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Imports C1.Win.C1Report
...
' レポートを読み込む
Dim c1r As New C1Report()
c1r.Load(fileName, reportName)
...
' C1Dフィルタを生成してファイルに連結する
Dim filter as C1dFilter
filter = New C1dFilter("C:\myreport.c1d.")
' .c1dファイルに使用するフォントを埋め込む
filter.EmbedFonts = True
' フィルタにレポートを出力する
c1r.RenderToFilter(filter)

C# コードの書き方

C#
コードのコピー
using C1.Win.C1Report;
...
// レポートを読み込む
C1Report c1r = new C1Report();
c1r.Load(fileName, reportName);
...
// C1Dフィルタを生成してファイルに連結する
C1dFilter filter = new C1dFilter(@"C:\myReport.c1d");
// .c1dファイルに使用するフォントを埋め込む
filter.EmbedFonts = true;
// フィルタにレポートを出力する
c1r.RenderToFilter(filter);

以下のコードはレポートを c1d ストリームに出力して、そのストリームからC1PrintDocumentを作成してC1PrintPreviewDialogで表示します。この場合は、C1.C1Preview.2 および C1.Win.C1Preview.2 アセンブリが必要になります。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Imports C1.Win.C1Report
Imports C1.C1Preview
Imports C1.Win.C1Preview
...
' C1Dフィルタを生成してメモリストリームに連結する
Dim stream As New MemoryStream()
Dim filter As New C1dFilter(stream)
' フィルタにレポートを出力する
c1r.RenderToFilter(filter)
...
' ストリームからC1PrintDocumentを生成する
Dim docC1 AsC1PrintDocument= C1PrintDocument.FromStream(stream)
' C1PrintPreviewDialogでプレビューする
Dim dlg As New C1PrintPreviewDialog()
dlg.Document = docC1
dlg.ShowDialog()

C# コードの書き方

C#
コードのコピー
using C1.Win.C1Report;
using C1.C1Preview;
using C1.Win.C1Preview;
...
// C1Dフィルタを生成してメモリストリームに連結する
MemoryStream stream = new MemoryStream();
C1dFilter filter = new C1dFilter(stream);
// フィルタにレポートを出力する
c1r.RenderToFilter(filter);
...
// ストリームからC1PrintDocumentを生成する
C1PrintDocument docC1 = C1PrintDocument.FromStream(stream);
// C1PrintPreviewDialogでプレビューする 
C1PrintPreviewDialog dlg = new C1PrintPreviewDialog();
dlg.Document = docC1;
dlg.ShowDialog();

印刷サービスの機能強化

印刷サービスの改良を目的に UsePrinterResolution プロパティが追加されました。デフォルトでは C1Report が .NET 印刷サポートサービスを使用してレイアウト計算するために、プリンタの高解像度グラフィックオブジェクトを取得します。この場合、レポートは高画質で出力されますが環境によっては非常に時間がかかってしまうこともあります。このプロパティを False に設定すると、レポートはより早く出力されますが画質が悪化することもあります。

また、アプリケーションによっては.NET 印刷サポートルーチンが使用可能でないことがあります。その時これらのサービスを使用または参照すると問題が発生してしまいます。これは .NET フレームワークの問題です。詳細については、Microsoft 社サポート情報の「文書番号:324565」を参照してください。

2つの集計関数を追加

Count() は、null 以外の の数を返します。

CountDistinct() は、重複をカウントしないで null 以外の の数を返します。

クエリパラメータタイプの追加

クエリーに2つの新しいパラメータタイプのサポートが追加されました。

  1. List 型パラメータ
    List 型パラメータ
    コードのコピー
    PARAMETERS EmployeeList list "1,2,3";
    select * from employees where employeeid in EmployeeList;
    
  2. Time 型パラメータ
    Time 型パラメータ
    コードのコピー
    PARAMETERS StartTime time "09:45";
    select * from employees where shiftStart > StartTime;
    

IListSource のサポート

C1Report に DataTable または DataView が割り当てられると、IC1ReportRecordset インタフェースを実装するラッパークラスが自動的に作成されます。このラッパークラスは内部クラスであり、IC1ReportRecordset インタフェースだけを公開します。このため、基底のデータオブジェクトを取得する方法がありませんでしたが、IListSource がこれを可能にしました。サンプルについては、Recordset プロパティを参照してください。

エラーメッセージの強化

OleDbException が生成された場合、コンポーネントは、実際に使用されている ConnectionString 値と RecordSource 値を示します。スクリプトコードまたはパラメータの置換によって変更されるため、これらは元のプロパティの値とは異なる場合があります。

その他の新機能

RTF エクスポートで画像をサポートする機能が強化されました。クリップボードに依存したり、ASP.NET の下で実行されることはなくなりました。また、スレッドの安全性が強化され、Barcode のフィールドでは TextDirection が使用されます。さらに、カスタムフィールドエディタに ICustomTypeDescriptor のサポートが追加されました。

関連トピック