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

时间:2011-08-25 17:54:45

标签: asp.net events reportviewer

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

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

感谢您的帮助。

4 个答案:

答案 0 :(得分:13)

我知道这已经过时了,但我对投票方法并不满意。您可以注册属性更改侦听器以更改isLoading(如所述here)。

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

<asp:ScriptManager ID="scriptManager" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/Reports/ReportViewer.js" />
    </Scripts>
</asp:ScriptManager>
<rsweb:ReportViewer ID="reportViewer" runat="server"/>

然后将其挂钩并在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
        }
    }
};

答案 1 :(得分:5)

一种选择是连续轮询isLoadingclient side ReportViewer api属性。如果isLoading属性返回true,则继续显示进度指示器,如果返回false则隐藏它并停止轮询。

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

答案 2 :(得分:0)

我使用JQuery实现这一点:

$(document).ready(function () {

document.getElementById('ctl00_ctl00_DefaultContent_AdminContent_reportViewer').ClientController.CustomOnReportLoaded = function () { 
alert('You see this after Report is Generated');
}
});

答案 3 :(得分:-1)

尝试以下代码段:

<script type="text/javascript">
    var app = Sys.Application;
    app.add_init(ApplicationInit);

    function ApplicationInit(sender) {
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        $('#ReportViewer1_ctl05').css('width', '1047px');
        if (!prm.get_isInAsyncPostBack()) {
            prm.add_endRequest(EndRequest)
        }
    }

    function EndRequest(sender, args) {
        var reportViewerControlId = "ReportViewer1";
        if (sender._postBackControlClientIDs[0].indexOf(reportViewerControlId) >= 0) {
            // do your stuff
        }
    }
</script>  

报告呈现完成后,将触发EndRequest函数。