问题背景
在项目实施过程中,有时需要从 Smartbi 报表中跳转到第三方URL页面,并且需要传递含有中文信息的参数。
解决方案
一般的做法可能是先写一个jsp页面来打开第三方URL页面,以便解决参数含中文信息的问题。为了减少该类需求的重复工作和宏代码中的代码量,Smartbi 提供了一个 WinHelper 类以方便解决该类问题。具体用法,请参考后面的示例代码。
支持版本
Smartbi V2.5 及后续版本。
使用示例
// ================================
// 示例1:打开第三方URL
// ================================
// ================================ // 灵活分析宏代码示例 // ================================ // 类型:ClientSide 对象:simpleReport 事件: onRenderTable var WinHelper = jsloader.resolve('smartbi.control.dialog.WinHelper'); function main(simpleReport, simpleReportContext) { var datas = { 'title': '搜索Smrtbi', 'url': 'http://www.soso.com/q', 'postData': [{ 'name': 'query', 'value': 'Smartbi' }, { 'name': 'utf-8', 'value': 'ie' }] }; // var features = { 'width': 800, 'height': 600 }; // WinHelper.showModalDialog(datas, features); };
// ================================
// 示例2:打开Smartbi灵活分析
// ================================
// ================================ // 灵活分析宏代码示例 // ================================ // 类型:ClientSide 对象:simpleReport 事件: onRenderTable var WinHelper = jsloader.resolve('smartbi.control.dialog.WinHelper'); function main(simpleReport, simpleReportContext) { var params = [{ 'name': 'BeginTime', 'value': '2010-07-21 16:11:00', 'displayValue': '2010-07-21 16:11:00' }, { 'name': 'EndTime', 'value': '2013-12-31 16:30:00', 'displayValue': '2013-12-31 16:30:00' }, { 'name': 'Scale', 'value': '2', 'displayValue': '2分钟' }]; var lang = jsloader.resolve('freequery.lang.lang'); var paramsInfoStr = lang.toJSONString(params); var path = JSLoader.baseHref + 'openresource.jsp'; var reportId = 'I2c94ea9f2567c7ec012567ef00b40046'; var datas = { 'title': '最大会话数分析', 'url': path, 'postData': [{ 'name': 'resid', 'value': reportId }, { 'name': 'paramsInfo', 'value': paramsInfoStr }] }; // var features = { 'width': 1024, 'height': 768, 'resizable': true }; // WinHelper.showModalDialog(datas, features); };