我在尝试使用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