BIEE叙述图导航实例

浏览: 2595

今天有网友问到怎样在叙述视图中进行导航?

 

叙述图不同于表格,相要在其中进行导航的话只能借用GO URL或者javacript函数的方式,并且同时还有一个难点在于,其无法像直接在表格字段属性中

设置导航action那样直接将源报表上的条件作为参数传递到目标报表。那怎么办呢?

 

好在BIEE给我们提供了两种方法,一种是基于URL的,一种是利用导航函数的。

 

先来看基于导航函数的吧

 

语法如下: 

 

function GoNav(event, sPath, sTbl, sCol, sVal, sTarget)

where:

event = event indicator.

sPath = the catalog path of the destination search.

sTbl = the logical table name to filter.

sCol = the logical column name to filter.

sVal = the value to filter by.

sTarget (optional) = "_blank" to open a new browser window with the results.

 

 

PortalNav Function

function PortalNav(event, sPortal,sTbl,sCol,sVal)

event = event indicator.

sPortal = the catalog path of the destination portal.

sTbl = the logical table name to filter.

sCol = the logical column name to filter.

sVal = the value to filter by.

 

两个函数,第一个函数是用来导航到请求(11g叫分析)的,第二个函数是用来导航到dashboard的。

 

下面让我们使用导航函数来完成导航吧,叙述图格式如下:

我想要实现当我点击金额的时候 跳转到目标报表,并将金额所对应的月份作为参数传过去,那么我们可以编写如下代码:

<font class=nav onclick="JavaScript:GoNav(event, '/shared/demo/target','Calendar','Calendar Quarter Desc','@1');">@2</font>

其中/shared/demo/target是目标请求的路径,Calendar是需要过滤字段所在的逻辑表名称,Calendar Quarter Desc是需要过滤字段的字段名称

@1是参数值(叙述视图中的语法,用于引用第一列值)

注:font标签只是用于承载onclick事件的,大家可以根据自己的需要选择相应的标签。另外经过测试,使用<a></a>标签会报找不到对象的错误,解决变法暂时没有

 

目标请求定义如下:

 

注意需要对Calendar Quarter Desc字段添加过滤器

 

 

OK,至此我们就用GoNav函数完成了在叙述视图中的导航,至于PortalNav的用法同理,只不过Path为仪表盘的Path。

 

不知道大家有没有发现,GoNav有一个很明显的缺点,那就是只能传一个参数,这在很多场合下不太适用,那如果我们传递多个参数应该怎么办呢?

 

答案是使用Go URL,有关Go URL的语法在此不在详述,请参阅

Integrator's Guide 之

8 Integrating Oracle BI Presentation Services into Corporate Environments Using HTTP and JavaScript

 

下面直接给出实现代码:

 <a href="https://ask.hellobi.com/saw.dll?Go&Path=/shared/demo/target&Action=Navigate&P0=2&P1=eq&P2=Products.%22Prod%20Subcategory%22&P3=@3&P4=eq&P5=Calendar.%22Calendar%20Quarter%20Desc%22&P6=@1">@2</a>

其实现了如下效果:

当我点击红色方框中的金额时,导航到目标请求,并同时传将月份和产品类型两个参数传递过去

需要注意的是,对于有字段名中含有空格的情况,我们需要用引号将其包起来,并将空格编码为%20,同时还需要将引号进行URL编码

例如:

"Calendar"."Calendar Quarter Desc"

应做如下编码:

Calendar.%22Calendar%20Quarter%20Desc%22

注:不含空格的名称无需引号

 

如果字段名称和参数值均是中文的话,你需要对其进行编码,可以使用JS来完成

 

用记事本新建一个文档,拷贝下面的代码然后保存为test.html(注意后缀名),然后用IE打开就可以得到编码的字符串了

10G的做法:

<html>
 <body>
  <script>
 var u=  encodeURI('saw.dll?Go&Path=/shared/0.人力资源分析/组件/分析/员工基本信息_test2&Action=Navigate&P0=1&P1=eq&P2="人员类型"."人员类型名称"&P3=实习');
 document.write(u);
  </script>
 </body>
</html>

11G的做法:

<html>
 <body>
  <script>
 var u=  encodeURI('saw.dll?Go&Path=/shared/0.人力资源分析/组件/分析/员工基本信息_test2&Action=Navigate&P0=1&P1=eq&P2="人员类型"."人员类型名称"&P3='+encodeURI('实习'));
 document.write(u);
  </script>
 </body>
</html>

注意在11G中我们需要参数值使用了两次编码!否则会有乱码问题!

 

另外还需要注意的是,我们也对中文字段加了引号!

 

本文所提到的所有内容均来自Oracle BIEE 11g官方文档

Integrator's Guide 之

8 Integrating Oracle BI Presentation Services into Corporate Environments Using HTTP and JavaScript

 

强烈建议人手一份官方文档,以便随时查阅。

推荐 1
本文由 风在身后 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

请教 需要引用@1的值 过滤器中选择单值没有问题 选择多值的时候代码如何编写?例如@1列值有{"E1","E2","E3","E4"} ,过滤器选择任意选择多项如何传参?

要回复文章请先登录注册