[WebForm上の条件を元に、動的にデータソースの内容を設定してレポートを作成し、WebViewerコントロール上に表示する
ページレポートの場合は、データセットプロバイダを使用して、外部からデータソースを設定することが可能です。
なお、この方法を使用する場合には、以下の点にご注意ください。
下記は、ページレポートの場合に、WebコントロールのTextBoxに入力された文字列を、SQL文としてレポートに設定し、動的にレポートを作成する一例です。
Visual Basic
| Visual Basicコード | 
                             
                                コードのコピー
                             
                         | 
                    
|---|---|
                            
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim rptPath As New System.IO.FileInfo(Server.MapPath("") & "/PageReport1.rdlx")
        '既存のレポートを読み込みレポート定義を作成します。
        Dim definition As New GrapeCity.ActiveReports.PageReport(rptPath)
       ' ページレポートのDocument(PageDocument)のLocateDataSourceイベントを使用して、
        ' 動的にデータテーブルを設定します。
        AddHandler definition.Document.LocateDataSource, AddressOf runtime_LocateDataSource
       WebViewer1.Report = definition
End Sub
Private Sub runtime_LocateDataSource(ByVal sender As Object, ByVal args As _                                             GrapeCity.ActiveReports.LocateDataSourceEventArgs)    Dim filepath As String = "C:/Nwind.mdb"    Dim cn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath)
     'TextBoxの文字列を、SQLプロパティに設定します。
        Dim da As New OleDb.OleDbDataAdapter(Me.TextBox1.Text, cn)
       Dim dt As New DataTable
       da.Fill(dt)
     ' args.Dataを介して、動的に取得したデータテーブルを設定します。 
        args.Data = dt
End Sub
                                           
                         | 
                    |
C#
| C#コード | 
                             
                                コードのコピー
                             
                         | 
                    
|---|---|
                            protected void Page_Load(object sender, EventArgs e) { System.IO.FileInfo rptPath = new System.IO.FileInfo(Server.MapPath("") + "/PageReport1.rdlx"); // 既存のレポートを読み込みレポート定義を作成します。 GrapeCity.ActiveReports.PageReport definition = new GrapeCity.ActiveReports.PageReport(rptPath); // ページレポートのDocument(PageDocument)のLocateDataSourceイベントを使用して、 // 動的にデータテーブルを設定します。 definition.Document.LocateDataSource += this.runtime_LocateDataSource; WebViewer1.Report = definition; } private void runtime_LocateDataSource(Object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args) { string filepath = "C:/Nwind.mdb"; System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath); //TextBoxの文字列を、SQLプロパティに設定します。 System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(this.TextBox1.Text, cn); System.Data.DataTable dt = new System.Data.DataTable(); da.Fill(dt); // args.Dataを介して、動的に取得したデータテーブルを設定します。 args.Data = dt; }  | 
                    |
上記のように、コード上で Reportプロパティにレポートオブジェクトを設定する場合、WebViewerコントロールの ReportNameプロパティは設定しないようにしてください。
        レポートの生成とWebViewerコントロールへの設定処理がそれぞれ重複して実行され、意図しない動作をする場合があります。
※WebViewerコントロールは、Professional の機能です。Standard では使用できません。