我使用c#和sql数据库创建了一个Windows窗体应用程序。 在运行时,我能够在datagridveiw中添加/删除列并更新数据。这样,当我重新打开应用程序时,数据被保存,我能够获得一个我使用向导静态设计的报表查看器。但是,它仅显示在设计阶段而不是运行时添加的列。
如何在报表查看器中显示运行时对数据进行的修改(添加或删除列)?
假设我设计的报告有三列Name,LastName,money,并在运行时成功获取报告,然后我添加了一些新列说(Age,Country) 在运行期间。当我尝试获取报告时,我只获得3列(名称,姓氏,金钱)和更新的行但未添加列。
答案 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();
}