0

WinForms reportViewer (.NET 3.5) 从 DataTable 绑定数据

我正在尝试将动态创建的 DataTable 绑定到 reportViewer 控件。互联网上有很多关于这方面的教程,但它们似乎不适用于这个项目......(有关于堆栈溢出的相关问题,但解决方案在我的情况下不起作用)

这是显示报告按钮的事件处理程序:

    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();
    }

我知道 DataTable 正在重试,因为 dataGridView 工作...... https://docs.google.com/file/d/0B6b_N7sDgjmvZHpEYS1BWWhqZ3c/edit?usp=sharing

该项目有以下限制:

  • 由于客户端环境,必须使用 .NET 3.5。(所以报告查看器 2008)

  • DataTable 和 ReportViewer 的创建位于不同的包中(应用程序/表示层)

  • 我试图避免创建 .rdlc 文件,因为报告(DataTables)具有可变数量的行/列。

任何人都知道在我的情况下如何将动态创建的 DataTable 绑定到报表查看器?

4

1 回答 1

1

您真正要求做的是动态创建一个 RDLC 文件并添加一个表。我从 gotreportviewer.com 找到了一个带有一些代码的第 3 方示例,只需在页面的右侧向下查看动态生成 RDLC - 表。

于 2013-04-21T03:12:51.103 回答