2012-03-29 2 views
1

comboBox의 선택한 텍스트를 기반으로 ReportViewer 구성 요소에 다른 보고서를 표시하려고하지만 데이터 원본을 보고서에 바인딩하는 데 어려움이 있습니다. "데이터 소스 인스턴스가 데이터 원본을 DataSet1에 대한 공급되지 않은"
comboBox.TextChanged(object sender, EventArgs e) 핸들러보고서를 ReportViewer 구성 요소에 동적으로 바인딩

reportViewer.Reset(); 
this.reportViewer.LocalReport.ReportEmbeddedResource = "ReportViewer." + MapComboBoxItem2ReportName(cbReports.Text) + ".rdlc"; 
this.reportViewer.RefreshReport(); 

내가 오류를 받고 있어요에서 코드입니다.
보고서를 동적으로로드 할 수있는 다른 방법은 무엇입니까?

답변

0

A data source instance has not been supplied for the datasource DataSet1

첫 번째 매개 변수 이름이 "DataSet1"인지 확인하십시오. .rdlc 디자인 양식으로 새 DataSource를 만들고 "DataSet1"이라는 이름으로 된 것입니다.

this.reportViewr.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", 
              yourDataSet.Tables[0])); 
+0

또한 보고서가 올바르게 바인딩되었는지 확인하기 위해 보고서 이름 (예 : 보고서 이름 등)에 제공 할 데이터를 식별해야합니다. 각 보고서의 예상 데이터 구조는 대부분 다를 수 있습니다. – GalacticCowboy

+0

이것은 나를 위해 전혀 작동하지 않습니다. 내가하고있는 몇 가지 큰 실수가 있습니다. 새로운 보고서를 만드는 과정과 관련이 있다고 생각합니다. 새 보고서를 만들 때마다 DataSource로''DataSet1 "'을 사용하고 있습니다. 이 문제를 해결하기 위해 더 이상 어디에서보아야할지 모르겠다. –

1

reportViewer의 소스 보고서를 변경하면 해당 보고서의 데이터 소스도 설정해야합니다. 일반적으로 디자이너가이를 처리합니다 (디자이너가 생성 한 코드를 처리하는 방법을 보려면 디자이너 코드를 살펴보십시오). 그러나 소스 보고서를 변경하면 컨트롤의 LocalReport 개체가 다시 설정됩니다.

this.reportViewer.LocalReport.ReportEmbeddedResource = "ReportViewer." + MapComboBoxItem2ReportName(cbReports.Text) + ".rdlc"; 
this.reportViewer.LocalReport.Datasource.Add("Datasource1", whateverIsYourDatasourceObject) 
this.reportViewer.RefreshReport(); 

당신은 당신의 보고서에 정의 된 모든 데이터 소스에 대해 같은 라인을 추가해야합니다 : 올바르게 표시 할 수 있도록

따라서 당신은 당신의 보고서에 모든 데이터 소스를 제공해야합니다. 사용할 데이터 소스 이름에 대해 잘 모르는 경우 디자이너 생성 코드를보고 자신이 무엇인지 확인하십시오. 또한 모든 보고서의 데이터 소스 이름을 찾으려면 다음 코드를 사용할 수 있습니다 : 보고서에 변수가

this.reportViewer.LocalReport.GetDataSourceNames() 

경우, 그렇지 않으면 같은 오류가 발생합니다, 그들도 정의해야합니다. 당신이 ReportPath을 왼쪽

+0

이것은 전혀 나를 위해 작동하지 않습니다. 내가하고있는 몇 가지 큰 실수가 있습니다. 새로운 보고서를 만드는 과정과 관련이 있다고 생각합니다. 새 보고서를 만들 때마다 DataSource로''DataSet1 "'을 사용하고 있습니다. 이 문제를 해결하기 위해 더 이상 어디를보아야할지 모르겠다. –

+0

코드에 대한 자세한 내용이 없으면 문제의 진정한 의미를 알기가 어렵다. –

1

하는 데 도움이

희망.

this.reportViewer.LocalReport.ReportPath = "Reports\\" + MapComboBoxItem2ReportName(cbReports.Text) + ".rdlc"; 

this.reportViewer.LocalReport.ReportEmbeddedResource = "ReportViewer." + MapComboBoxItem2ReportName(cbReports.Text) + ".rdlc"; 

this.reportViewer.LocalReport.Datasource.Add("Datasource1", whateverIsYourDatasourceObject) 
this.reportViewer.RefreshReport(); 
관련 문제