0

要求
如果报表成功呈现,则允许用户保存报表的当前参数状态。IE。选择所有下拉菜单,填写不允许空白的空白字段等。

ReportViewer 行为
按下“查看报告”按钮后,报告查看器会执行一些客户端验证,并在一切不正常时显示警报;否则,将重新生成报告并调用 javascript 函数:pageLoad()。

可能的解决方案

  • 以某种方式为“查看报告”单击事件添加一个句柄并禁用我的“保存”按钮。
  • 在 pageLoad() 方法中启用“保存”按钮。

这是实施解决方案的最佳方式吗?如果是这样,我如何获得对“查看报告”按钮的引用?

预计到达时间:

这是我目前正在使用的代码。
- btnViewReport是您在 ReportViewer 参数区域右侧看到的按钮。
- btnSave是我在 ReportViewer 之外添加的按钮。它做什么都没关系。重要的是它应该只在单击btnViewReport并成功生成报告时显示(所有必需的参数都已填写)。
- pageLoad是一个函数,每次有部分回调时,ScriptManager 都会调用它。单击btnViewReport会导致部分回发。

    var firstTimePageLoaded = true;

    function pageLoad() {

        if (this.firstTimePageLoaded) {
            $("#btnSave").hide();
            this.firstTimePageLoaded = false;
        }
        else {
            $("#btnSave").show();
        }

        var btnViewReport = $('#<%=ReportViewer1.ClientID %> input[type="submit"][value="View Report"]');
        btnViewReport.unbind('click'); // pageLoad() is sometimes called twice.
        btnViewReport.click(function () {
            $("#btnSave").hide();
        });
    }

现在,如果我将一些参数字段留空并单击“查看报告”,则“保存”按钮将被隐藏,因为不会发生部分回发。

我需要 firstTimePageLoaded 标志来防止按钮在页面最初显示时显示。它有效,但就在我的糟糕解决方法列表中。

4

0 回答 0