0

WinForms reportViewer (.NET 3.5) DataTable からのデータのバインド

動的に作成された DataTable を reportViewer コントロールにバインドしようとしています。インターネット上にはこれに関する多くのチュートリアルがありますが、このプロジェクトでは機能しないようです... (スタックオーバーフローに関する関連する質問がありますが、私の場合は解決策が機能しません)

これは、Show Report Button のイベント ハンドラです。

    private void btn_ShowRwport_Click(object sender, EventArgs e)
    {
        //Set the date range for the report
        rptctn.SetDateRangeOne(listBox1.SelectedItem.ToString(), dateTimePicker_Start.Value, dateTimePicker_End.Value);

        //Get the report datatable
        DataTable dt = rptctn.GetReportTest(listBox1.SelectedItem.ToString());

        //Set the datagridview
        dataGridView1.DataSource = dt;

        //Set the reportViewer
        this.reportViewer1.LocalReport.DataSources.Clear();            
        Microsoft.Reporting.WinForms.ReportDataSource rprtDTSource = new Microsoft.Reporting.WinForms.ReportDataSource(dt.TableName, dt);
        this.reportViewer1.LocalReport.DataSources.Add(rprtDTSource);
        this.reportViewer1.RefreshReport();
    }

dataGridView が機能するため、DataTable が適切に再試行されていることはわかっています... https://docs.google.com/file/d/0B6b_N7sDgjmvZHpEYS1BWWhqZ3c/edit?usp=sharing

プロジェクトには次の制約があります。

  • クライアント環境により、.NET 3.5 を使用する必要があります。(レポートビューア2008なので)

  • DataTable の作成と ReportViewer は別のパッケージ (アプリケーション/プレゼンテーション レイヤー) にあります。

  • レポート (DataTables) には可変数の行/列があるため、.rdlc ファイルを作成しないようにしています。

私の場合、動的に作成された DataTable をレポート ビューアーにバインドする方法を知っている人はいますか?

4

1 に答える 1

1

実際にあなたが求めているのは、RDLC ファイルを動的に作成してテーブルを追加することです。gotreportviewer.com のコードを使用したサードパーティの例を見つけました。ページの右側を見下ろして、RDLC を動的に生成する - テーブルを参照してください。

于 2013-04-21T03:12:51.103 に答える