2011-04-14 4 views

답변

3

ReportViewer의 RenderBegin 이벤트에 대한 처리기를 정의하면 ParameterValues라는 NameValueDictionary 속성이 비어있는 RenderBeginEventArgs 매개 변수가 수신됩니다.

이 컬렉션에 {name, value} 쌍을 추가 할 수 있으며 보고서의 Parameters 컬렉션에서 마무리되는 것처럼 보입니다.

예를 들어, "InputElementID"및 "ReportPeriod"라는 두 개의 보고서 매개 변수가 있습니다. 어떻게이 보고서는 사용자 상호 작용에 대한 응답으로 새 매개 변수 자체를 다시 렌더링하기 위해 어떻게해야합니까 :이 또 다른 문제를 제기한다

private void ReportViewer_RenderBegin(object sender, Telerik.ReportViewer.Silverlight.RenderBeginEventArgs args) 
    { 
     args.ParameterValues.Add("InputElementID", this.elementId); 
     args.ParameterValues.Add("ReportPeriod", "fortnight"); 
    } 

그러나 나의 RenderBegin 핸들러는 다음과 같이 보입니다? 예를 들어, 필자의 경우에는 왼쪽에 RadTreeListView가 있고 오른쪽에 ReportViewer가있는 마스터 세부 정보 페이지가 설정되어 있습니다. 선택한 항목이 변경 될 때마다 ReportViewer 자체를 다시 계산해야했습니다.

ReportViewer에는 강제로 다시 렌더링 할 수있는 메서드가 없습니다. 그리고 보고서 속성을 설정하면 변경 사항이 모두 매개 변수 인 경우 보고서 문자열이 매번 동일하므로 아무 것도하지 않습니다.

내 해킹 해결책은 변경을 강제하고 싶을 때 ReportServiceUri 속성을 설정하는 것이 었습니다.

// No change, just forces the ReportViewer to re-render itself 
this.ReportViewer.ReportServiceUri = new Uri("../ReportService.svc", UriKind.RelativeOrAbsolute); 

분명히 더 좋은 방법 일 것입니다. 그러나 이것은 당신을 가야합니다.

+0

Telerik ReportViewer가 다시 렌더링되도록하는 더 좋은 방법을 찾았습니다. http://www.telerik.com/community/forums/reporting/telerik-reporting/refresh-a-silverlight-report.aspx –

관련 문제