2013-08-12 3 views
2

Microsoft.Reporting.WinForms.LocalReport에 문제가 있습니다. GetTotalPages() 메서드는 파일 렌더링 및 저장 후에도 항상 0을 반환합니다. 보고서가 올바르게 생성 및 저장되었습니다. 도와주세요.로컬 보고서. GetTotalPages() 항상 0을 반환합니다.

foreach (DataSet.PersonsRow person in dataSet.Persons.Rows) 
{ 

DataSet.PersonsDataTable persons = new DataSet.PersonsDataTable(); 
persons.ImportRow(person); ReportViewer rv = new ReportViewer(); 
string mimeType, encoding, fnameExtension; 
string[] streamids; Warning[] warnings; 
rv.ProcessingMode = ProcessingMode.Local; 
rv.LocalReport.ReportPath = "ReportTemplates\\report.rdlc"; 
rv.LocalReport.SetParameters(new ReportParameter("Parameter", Settings.Parameter.ToString())); 
rv.LocalReport.DataSources.Add(new ReportDataSource(dataSet.persons.TableName, (DataTable)persons)); 
rv.LocalReport.DataSources.Add(new ReportDataSource(dataSet.Profile.TableName, (DataTable)dataSet.Profile)); 
rv.LocalReport.DataSources.Add(new ReportDataSource(dataSet.Places.TableName, dataSet.Equipment.Where(tc => tc.PersonID == person.PersonID))); 
byte[] bytes = rv.LocalReport.Render(OutputTypeStr, "<DeviceInfo><SimplePageHeaders>True</SimplePageHeaders></DeviceInfo>", out mimeType, out encoding, out fnameExtension, out streamids, out warnings); 

int pagesCount = rv.LocalReport.GetTotalPages(); // pagesCount equal zero 
using (FileStream fs = new FileStream(filename, FileMode.Create)) 
{ 
    fs.Write(bytes, 0, bytes.Length); 
    fs.Close(); 
    pagesCount = rv.LocalReport.GetTotalPages(); // pagesCount also equal zero 
} 

} 

답변

0

내가 사용하지 않는 것을 지적하고 싶습니다 : 사용하지 않는 경우

Microsoft.Reporting.WinForms.LocalReport.GetTotalPages(); 

하지만

Microsoft.Reporting.WinForms.ReportViewer.LocalReport.GetTotalPages(); 

LocalReport lr을 만들려면 어떻게해야합니까?

희망이 도움이됩니다.

+0

감사합니다. "LocalReport lr"은 정말 불필요합니다 (질문에서 제거했습니다). 문제는 처음에는 "lr"대신에 그 것이다. "rv.LocalReport"가있었습니다. (나는 포럼 중 하나를 읽고 ReportViewer를 사용하는 것이 좋습니다) 그리고 나는이 "LocalReport lr"을 삭제하는 것을 잊었습니다. –