我在嘗試使用c#將一個dataTable綁定到Winform中的ReportViewer控件時出現了一些問題。C#Winforms將DataTable綁定到ReportrViewer控件
我花了很多時間通過這個和其他論壇尋找解決方案,但唉迄今沒有找到。 我已將調試標記放入我的代碼中,並可使用正確的2x2陣列摘要報告「查看」已完成的dataTable。但是當我嘗試將dataTable綁定到ReportViewer對象時,我得到一個空白屏幕。我很確定在我的編碼中有一些簡單的缺失,但看不到它是什麼!
這裏是我的報告形式的更多詳細信息:
- 我有2個全局字段定義如下:
/*create global dataTable */ DataTable _dTable = new DataTable("dtQOPS3710"); /* create a new Dataset...*/ Dataset _dSet = new Dataset("psysReporting.dSetReportViewer.xsd");
這裏是我用來構建代碼dataTable並將其綁定到ReportViewer:
/(共10個)列添加到DataTable/
_dTable.Columns.Add(new DataColumn("Nationality", typeof(String))); _dTable.Columns.Add(new DataColumn("Total_Females", typeof(String))); _dTable.Columns.Add(new DataColumn("Total_Males", typeof(String))); _dTable.Columns.Add(new DataColumn("Elig.55", typeof(String))); _dTable.Columns.Add(new DataColumn("Elig.56", typeof(String))); _dTable.Columns.Add(new DataColumn("Elig.57", typeof(String))); _dTable.Columns.Add(new DataColumn("Elig.58", typeof(String))); _dTable.Columns.Add(new DataColumn("Elig.25", typeof(String))); _dTable.Columns.Add(new DataColumn("Elig.26", typeof(String))); _dTable.Columns.Add(new DataColumn("Total_Patients", typeof(String))); /* now add the rows */ for (int i = 0; i < _intMaxNoOfRows; i++) { DataRow dataRow = _dTable.NewRow(); for (int j = 0; j < _maxJ; j++) { if (strArrayList[i, 1] != string.Empty) /* column 1 = Nationality */ dataRow[j] = strArrayList[i, j]; } if (strArrayList[i, 1] != string.Empty) /* column 1= Nationality */ { _dTable.Rows.Add(dataRow); } } // add datatable '_dTable' to dataset '_dSet'... _dSet.Tables.Add(_dTable); // bind dataSet to report viewer this.reportViewer1.Reset(); this.reportViewer1.ProcessingMode = ProcessingMode.Local; this.reportViewer1.LocalReport.ReportEmbeddedResource = "psysReporting.Report1.rdlc"; this.reportViewer1.LocalReport.DataSources.Clear(); this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource(_dTable.TableName, _dTable)); this.reportViewer1.Refresh();
正如我上文所述,我試着調試代碼,我可以看到DataTable中正確的報告,但它似乎綁定不起作用!運行代碼時我沒有遇到任何錯誤!
任何幫助將非常感謝!
OK,所以我加了下面一行到我的代碼如你所說:this.reportViewer1.DataBindings.Add(新的Binding(_dTable.TableName,_dTable ,_dTable.ToString())); this.reportViewer1.Refresh();我運行應用程序時出現以下錯誤。 :無法綁定到目標控件上的屬性'dtQOPS3710'。 參數名稱:PropertyName如何獲取我的DataTable的屬性名稱? – user3081742 2014-12-03 05:06:35
那麼這個問題解決了嗎?請標記答案。如果您有其他問題(如您的財產「dtQOPS3710」所述),請打開所有細節的另一個問題。 – Askolein 2014-12-04 11:32:44
我通過將datagridview導出到Excel工作簿來解決此問題!工作得很好! – user3081742 2014-12-07 07:22:42