用户在报表查看器中显示更多添加的列

时间:2014-09-28 20:03:26

标签: c# sql database reportviewer

我使用c#和sql数据库创建了一个Windows窗体应用程序。 在运行时,我能够在datagridveiw中添加/删除列并更新数据。这样,当我重新打开应用程序时,数据被保存,我能够获得一个我使用向导静态设计的报表查看器。但是,它仅显示在设计阶段而不是运行时添加的列。

如何在报表查看器中显示运行时对数据进行的修改(添加或删除列)?

假设我设计的报告有三列Name,LastName,money,并在运行时成功获取报告,然后我添加了一些新列说(Age,Country) 在运行期间。当我尝试获取报告时,我只获得3列(名称,姓氏,金钱)和更新的行但未添加列。

1 个答案:

答案 0 :(得分:0)

我刚刚解决了同样的问题。我在互联网上搜索了几天,但我找不到一个好的答案。所以我希望我的帖子能帮助某人克服同样的问题。

您只需要手动定义连接,重新填充数据集并将源绑定到reportviewer。这是我的项目示例:

使用Microsoft.Reporting.WinForms;

private void ReportForm_Load(object sender, EventArgs e)
{
    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\GD Robotics\VisualProjects\GDPolin\GDPolin\PolinaDB.mdf;Integrated Security=True;Connect Timeout=30";
    conn.Open();
    SqlDataAdapter reportDBTableAdapter = new SqlDataAdapter("SELECT * FROM  [ReportDB]", conn);
    DataTable polinaDBDataSet = new DataTable();
    reportDBTableAdapter.Fill(polinaDBDataSet);
    conn.Close();

    this.reportViewer1.Reset();
    this.reportViewer1.LocalReport.DataSources.Clear();
    this.reportViewer1.LocalReport.ReportPath = @"D:\GD Robotics\VisualProjects\GDPolin\GDPolin\Report1.rdlc";
    ReportDataSource rds = new ReportDataSource("DataSet1", polinaDBDataSet);//"DataSet1" is the name of your dataset. Go to .rdlc form>VIEW>Report Data>"Right click on dataset">Dataset Properties
    this.reportViewer1.LocalReport.DataSources.Add(rds);
    this.reportViewer1.RefreshReport();
}