2014-09-28 38 views
0

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

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

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

+0

我编辑了你的文章,使其更清晰。另外,不需要奉承我们。 – 2014-09-28 20:17:45

+0

好的谢谢你,最好的合作伙伴 – 2014-09-28 20:20:33

回答

0

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

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

using 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(); 
} 
相关问题