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

本文关键字:添加 用户 显示 报表 | 更新日期: 2023-09-27 18:25:02

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

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

假设我将报告设计为有三列Name、LastName、money,并在运行时成功获得报告,然后我添加了一些新列,比如(Age、Country)在运行期间。当我尝试获取报告时,我只得到3列(Name、LastName、Money),其中有更新的行,但没有添加列。

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

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

您所需要做的就是手动定义连接,重新填充数据集,并将源绑定到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();
}