我需要知道何时在SSRS HTML Viewer - WinForms WebBrowser Control中加载报告

时间:2013-08-05 14:18:23

标签: html ajax dom reporting-services

我有自定义winform前端,它从用户获取参数设置并为ssrs报告构建URL并在WebBrowser控件中显示报告。这很好用,除了我需要计算报告在屏幕上显示所需的时间。

我试过(WebBrowser HTML文档):

DocumentCompleted事件 - 问题:当加载对话框仍然可见时,会调用此方法。

ProgressChanged事件 - 问题:我尝试获取文档的就绪状态,但在显示“加载”对话框时仍显示为已完成。

似乎报告的加载必须是来自ssrs服务器的ajax调用,所以我现在正在寻找我可以做什么来确定何时发生这种情况。

因此,我需要做的是在报表实际显示在Web浏览器控件中时捕获(而不是在显示加载对话框时)。有关如何实现这一目标的任何建议吗?

编辑: 这是我尝试过的,这似乎是第一次工作,但仍然是不对的。问题是我触发的ProgressChanged事件,我只是使用它是一个捕获所有页面事件。我想我想要在页面上键入Async事件,所以我正在执行正确的事件。

样品:

Private Sub ReportDocumentLoaded() Handles wbReportViewer.ProgressChanged
    Dim doc As HtmlDocument = wbReportViewer.Document
    If Not doc Is Nothing Then
        Dim el As HtmlElement = doc.GetElementById("ReportViewerControl_AsyncWait_Wait")
        If Not el Is Nothing Then
            Dim rptStyles = el.Style.Split(";")
            For Each s As String In rptStyles
                If s.ToUpper.Contains("VISIBILITY") Then
                    If s.ToUpper.Contains("HIDDEN") Then
                        MsgBox("Report is displayed" & s)
                    End If
                End If
            Next
        End If
    End If
End Sub 

我在思考,对于我的情况,我将通过注入一些JavaScript来附加到页面事件。

http://msdn.microsoft.com/en-us/library/bb386417(v=vs.100).aspx

1 个答案:

答案 0 :(得分:0)

为什么不使用ReportViewer for WinForms而不是在WebBroswer控件中显示SSRS?我相信它更适合场景。