在报表查看器中显示用户添加的更多列
本文关键字:添加 用户 显示 报表 | 更新日期: 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();
}