2012-11-07 2 views
1

보고서 뷰어 컨트롤을 처음 사용했습니다.보고서 뷰어를 사용하고 데이터 소스를 요청할 때 데이터 액세스 클래스가 표시되지 않습니다.

현재 보고서를 만드는 방법은 저장 프로 시저를 호출하고 입력 매개 변수를 삽입하여 데이터베이스의 테이블을 쿼리하고 행 목록을 반환하는 것입니다.

행이 데이터 테이블에 삽입되고 데이터 테이블이 반환됩니다.

데이터 테이블은 사용자가 볼 수있는 gridview에 바인드됩니다.

이제 내 문제 ....

나는 사용자가 쉽게 데이터를 내보낼과 함께 멋진 그래프를보실 수 있습니다 대신의 gridview의 데이터를 표시하는 보고서 뷰어를 사용하고 싶습니다.

저장 프로 시저가 내 데이터 액세스 클래스에서 호출됩니다. 이는 내 프로젝트에있는 클래스 일뿐 폴더에 없습니다.

보고서 뷰어를 만들고 데이터 소스를 요청하면 데이터 액세스 클래스가 표시되지 않습니다. 내 저장된 프로 시저 함수에서 결과 (반환 된 데이터 테이블)를 가져 와서 보고서 뷰어에 삽입하려면 어떻게해야합니까? 당신이 당신의 데이터를 DataTable에있는 경우

답변

0

리포트 뷰어에서 내 데이터 테이블에 액세스하도록 한 결과 프로젝트에 데이터 세트를 추가했습니다. 해당 데이터 세트 내에서 코드 테이블과 동일한 열 이름으로 데이터 테이블을 생성해야했습니다. 거기에서 나는 내 보고서에 가서 테이블을 추가하고 데이터 세트 내에서 생성 된 데이터 테이블을 가리켰다. 그런 다음 내 코드에서 프로그래밍 방식으로 Shelby에서 설명한 코드를 사용하여 데이터 테이블을 추가했습니다.

1

당신은 프로그램 접근 방법을 시도 할 수,

//Load Report Definition. 
// From File. 
ReportViewer1.LocalReport.ReportPath = "C:\\Report.rdlc"; 
//Load Report Data. 
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", data)); 
//Refresh Control. 
ReportViewer1.LocalReport.Refresh(); 

, 당신은 단순히 데이터 소스로의 ReportViewer에 추가합니다. "DataSet1"은 현재 보고서 뷰어에로드 된 보고서의 데이터 집합 이름입니다.

그래서 Entity Framework를 사용한다면 이렇게 될 것입니다.

//Create Connection. 
Entities db = new Entities(); 

//Get the Data Using the query supplied (Where Entities.SomeObject is the Entity to retrieve data). 
IQueryable<Object> data = db.CreateQuery<Object>("SELECT VALUE c FROM Entities.SomeObject AS c WHERE c.SomeValue> 0"); 

//Reset Control. Doesn't Usually work if this is skipped for some reason. 
ReportViewer1.Reset(); 
//Load Report Definition. 
// From File. 
ReportViewer1.LocalReport.ReportPath = "C:\\Report.rdlc"; 
//Load Report Data. 
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", data)); 
//Refresh Control. 
ReportViewer1.LocalReport.Refresh(); 

동일한 데이터 테이블이 작동해야합니다.

+0

좋아요 프로그래밍 방식으로 데이터 소스를 설정하는 방법을보고 있지만 C 드라이브의 위치로 보고서 경로를 설정하는 위치는 무엇입니까? – Telecaster

+0

보고서 폴더에있는 보고서를 직접로드하려면 'ReportViewer1.LocalReport.ReportPath = Server.MapPath ("~/Reports/Report1.rdlc");를 사용하면 내 보고서 파일 (.rdlc) 귀하의 프로젝트. 여러 프로젝트를 가지고 있기 때문에 단순한 방식으로 설정했습니다. 동일한 보고서를 사용하여 여러 개의 복사본을 가지고있는 대신 C 드라이브에 저장했습니다. – Shelby115

+0

그래서 프로그래밍 방식으로 데이터 소스를 설정해야 할뿐만 아니라 이미 폴더에 보고서를 만들고 ReportViewer1을 가리켜 야합니다. 내 보고서를 비워 둘 수 있으며 데이터 소스를 처리하는 방법을 알고 있습니까? 또는 보고서에서 gridview와 같은 컨테이너를 프로그래밍 방식으로 만들고 데이터 소스를 가리켜 야합니다. – Telecaster