无法找到ReportViewer事件以进行渲染完成

And*_*rew 10 asp.net events reportviewer

我正在尝试在ReportViewer控件完成渲染时触发事件(以删除自定义进度/状态指示器).我已经探索了ReportViewer控件的事件,我似乎无法找到报告完成时实际触发的事件.

我正在使用Visual Studio 2010和ASP.NET 4.

谢谢你的帮助.

Mat*_*att 13

我知道这是旧的,但我对投票方法不满意.您可以更改isLoading而不是注册一个属性更改侦听器(如描述在这里).

总之,在脚本管理器中添加一些javascript,例如在表单元素中:

<asp:ScriptManager ID="scriptManager" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/Reports/ReportViewer.js" />
    </Scripts>
</asp:ScriptManager>
<rsweb:ReportViewer ID="reportViewer" runat="server"/>
Run Code Online (Sandbox Code Playgroud)

然后将其挂钩并在ReportViewer.js中添加您需要的任何客户端逻辑:

Sys.Application.add_load(function () {
    $find("reportViewer").add_propertyChanged(viewerPropertyChanged);
});

function viewerPropertyChanged(sender, e) {
    if (e.get_propertyName() == "isLoading") {
        if ($find("reportViewer").get_isLoading()) {
            // Do something when loading starts
        }
        else {
            // Do something when loading stops
        }
    }
};
Run Code Online (Sandbox Code Playgroud)


jos*_*shb 5

一种选择是连续轮询客户端ReportViewer apiisLoading属性.如果isLoading属性返回true,则继续显示进度指示器,如果返回false则隐藏它并停止轮询.

我自己没有尝试过但是根据文档看起来它应该可行.

  • 应该用该代码更新答案,而不是将其混合到评论中. (2认同)