2011-11-13 4 views
1

RDLC 보고서를로드하는 aspx 페이지가 있습니다.page_load에 RDLC로드

보고서를 포스트 백 (즉, 아무 것도하지 않고 페이지를 게시하고 DoReport() 메소드를 호출하는 페이지에 추가)하면 보고서가 제대로로드됩니다. 나는 (내가를 Page_Load에서 DoReport() 메소드를 넣어 즉, 페이지로드에서 직접 보고서를로드 할 경우, 페이지가 끝없이 실행하는 것, 그리고를 Page_Load는 수백 번이라고

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrEmpty(Request.QueryString["ReportID"])) 
    { 
     BuildReport(Convert.ToInt32(Request.QueryString["ReportID"])); 
    } 
} 

private void BuildReport(int reportID_) 
{ 
    Database db = DatabaseFactory.CreateDatabase(); 
    DataTable tbl = db.ExecuteDataSet(CommandType.Text, "select top 10 * from TABLE_NAME").Tables[0]; 

    RdlcBuilder rdlcBuilder = new RdlcBuilder(reportID_); //custom class that builds the RDLC based on the report ID 
    XmlDocument xmlDoc = new XmlDocument(); 
    Bind(rdlcBuilder.GetRdlcStream(xmlDoc), tbl); 
} 

private void Bind(Stream reportDefinitionStream_, DataTable dataSource_) 
{ 
    ReportViewer1.LocalReport.DataSources.Clear(); 

    ReportViewer1.Width = new Unit(700); 
    ReportViewer1.Height = new Unit(1200); 
    ReportViewer1.LocalReport.EnableExternalImages = true; 
    ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSetName", dataSource_)); 
    ReportViewer1.LocalReport.LoadReportDefinition(reportDefinitionStream_); 

} 

을 다시 -.이 내가의 ReportViewer 비동기 자체를 채 웁니다 때 다른를 Page_Load은, 트리거합니다 ('로드'기호가 표시되어있을 때) 보고서에 대한 보고서 정의를 할당 명령 단추

+0

당신이 여기를 Page_Load 코드를 넣을 수 있습니다 :

간단한 수정 IsPostBack을위한 검사를 수행하는 것입니다? – DeveloperX

+0

또한 DoReport()를 넣었습니다. 문제가 발생하는 것에 대해서는 회의적입니다. –

답변

1

에서 BuildReport (INT의 reportID_)를 호출하면 페이지가 잘 작동합니다.

모든 Page_Load 내에서 보고서 정의를 지정하므로 코드가 간접적으로 invokin됩니다 g Page_Load를 재귀 적으로.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(IsPostBack) 
     return; 
    //... 
    // Assign report definition. 
    //... 

} 
관련 문제