我有一个Crystal Reports 13 wpf控件,我正在加载来自数据集的报表和数据:
ReportDocument report = new ReportDocument();
if (report != null)
{
report.Load(ReportFileName);
report.SetDataSource(DataSet);
reportViewer.ViewerCore.ReportSource = report;
}
为了知道控件何时完成渲染,我可以处理什么事件?观众出口:
public event PageMouseEventHandler ClickPage;
public event PageMouseEventHandler DoubleClickPage;
public event DrillEventHandler Drill;
public event DrillSubreportEventHandler DrillDownSubreport;
public event NavigateEventHandler Navigate;
public event RefreshEventHandler Refresh;
public event SearchEventHandler Search;
public event RoutedEventHandler SelectionChange;
public event RoutedEventHandler ViewChange;
public event ZoomEventHandler ViewZoom;
和ViewerCore只导出:
public event ExceptionEventHandler Error;
这些似乎都不合理。我也简单地使用了ReportClientDocument。
答案 0 :(得分:3)
后人:
DependencyPropertyDescriptor p = DependencyPropertyDescriptor.FromProperty(SAPBusinessObjects.WPF.Viewer.ViewerCore.TotalPageNumberProperty, typeof(SAPBusinessObjects.WPF.Viewer.ViewerCore));
p.AddValueChanged(reportViewer.ViewerCore, OnPageCountChanged);
由于TotalPageNumber属性在呈现该页面后正确更新...
private void OnPageCountChanged(object sender, EventArgs e)
{
//do whats needed
}
你知道控件何时完成渲染。
答案 1 :(得分:1)
在Crystal Reports 13中,有一个PageChanged事件由于某种原因未在UI中公开(它具有Browsable(false)
属性)。我需要缩放报告,这个事件是我能做到的唯一非黑客方式:只做
viewer.PageChanged += Viewer_PageChanged;
在表单构造函数中,然后添加
private void Viewer_PageChanged(object sender, EventArgs e)
{
viewer.Zoom(2);
}
到你的私人方法。 (viewer
是表单上的CrystalReportViewer
组件。)