2014-09-28 68 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(); 
} 
相關問題