要求
如果报表成功呈现,则允许用户保存报表的当前参数状态。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 标志来防止按钮在页面最初显示时显示。它有效,但就在我的糟糕解决方法列表中。