C#을 사용하여 Winform의 ReportViewer 컨트롤에 dataTable을 바인딩하는 데 문제가 있습니다.C# Winforms DataTable을 ReportrViewer 컨트롤에 바인딩
나는이 포럼이나 다른 포럼을 통해 해결책을 찾는 데 많은 시간을 할애했지만 아직까지는 찾아 내지 못했습니다. 디버그 마커를 코드에 넣었으며 올바른 2x2 배열 요약 보고서를 사용하여 완성 된 dataTable을 '볼 수 있습니다.' 그러나 DataTable을 ReportViewer 개체에 바인딩하려고하면 빈 화면이 나타납니다. 나는 코딩에 뭔가 빠져있는 것이 확실하지만, 그것이 무엇인지를 볼 수 없다 !!! 나는를 구축하는 데 사용하는 코드를
/*create global dataTable */ DataTable _dTable = new DataTable("dtQOPS3710"); /* create a new Dataset...*/ Dataset _dSet = new Dataset("psysReporting.dSetReportViewer.xsd");
을 그리고 여기에 다음과 같이 내가이 개 글로벌 필드가 정의되어
- :
여기 내보고 양식의 자세한 내용입니다 dataTable을 만들고 ReportViewer에 바인딩합니다.
/는 제가 위에서 언급 한 바와 같이/
_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();
, 내가 코드를 디버깅 시도했습니다 (총 10)가 데이터 테이블에 열을 추가하고 나는 데이터 테이블에서 올바른 보고서를 볼 수 있지만, 바인딩이 작동하지 않는 것 같습니다! 코드를 실행할 때 오류가 발생하지 않습니다!
도움이 될 것입니다.
확인을, 그래서 당신이 제안 나는 내 코드에 다음 줄을 추가 : (그냥 말, 귀하의 질문에 아무 링크)이 시도하지 this.reportViewer1.DataBindings.Add (새 바인딩 (_dTable.TableName, _dTable을 , _dTable.ToString())); this.reportViewer1.Refresh(); 앱을 실행하면 오류가 발생합니다. : 대상 컨트롤의 'dtQOPS3710'속성에 바인딩 할 수 없습니다. 매개 변수 이름 : PropertyName 내 DataTable의 propertyname을 얻으려면 어떻게해야합니까? – user3081742
그럼이 질문이 해결 되었습니까? 대답을 표시하십시오. 다른 문제가있는 경우 ("dtQOPS3710"속성에 설명 된대로) 모든 세부 사항과 함께 다른 질문을 엽니 다. – Askolein
DataGridview를 Excel 통합 문서로 내보내이 문제를 해결했습니다! 잘 작동합니다! – user3081742