zoukankan      html  css  js  c++  java
  • BO入门实战

         最近一个项目用到BO的东西,于是研究了一下,项目要求不多,只是作几张报表,所以研究不深入,那就写个入门教程吧。

    1. Universe
    要在BO中创建报表(Crystal Report不在此列),首先要创建Universe,通俗一点理解,在本人看来就是个数据源(Data Source),
    因为大多数报表工具都把这种东西叫作数据源,只是BO很有创新精神地给它起了个“响亮的”名字。


    Universe只是数据结构的描述,真正的数据当然还是要从数据库中取,所以在创建Universe时还是要先建立一个数据库连接,
    Universe支持各种我知道的和不知道的类型的数据库,选择一个用的类型的就是了,不知道的就让它继续“未知”好了。
    然后,就插入我们报表要用的表或视图,如果要作多张报表分别用到不同的表或视图,那就把它们都拽进来吧。


    好了,Universe创完了,使用Export,导出到服务器上,就可以在报表中使用了。


    Universe本身支持多种关联,条件,函数等,也许在BO专家的眼中,它是无所不能的,对于菜鸟也别慌,
    把那复杂的逻辑就放在视图里作吧,让Universe"干净干净"不也挺好看的嘛。

    2. Webi
    BO有两种方式创建报表,Desktop Intelligence和Web intelligence, 一个桌面版,一个网页版,两个功能都差不多,
    概况的说,那就是相当弱,甚至都赶不上vs.net自带的RDLC。好在它在网页上查看报表时支持html,所以还是可以通过javascript
    来干一些很有意思的事的。在Desktop Intelligence中发现合并列不好用(路过的有知道的,还望指教!),所以本人选择了Web intelligence (简称Webi).

    效果图:


    在设计报表方面,和大多数报表工具没什么差别,下面说点“电视台不让说的”(引自郭德刚相声,用于指代非官方文档说明内容):
    1. 单元格背景色:
    将单元格内容属性由“文本”改为“HTML”,然后使用条件表达式,如:

    = If ([Bs] > 4 ;
        "<div style='100%;height:100%;background-color:#B0B0F0;color:#000000;padding-top:8px'>"+[Dt]+"</div>" ;
        If ([Bs] > 3 ;
        "<div style='100%;height:100%;background-color:#B0B0B0;color:#000000;padding-top:8px'>"+[Dt]+"</div>" ;
        If ([Bs] > 2 ;
        "<div style='100%;height:100%;background-color:#FF0000;color:#000000;padding-top:8px'>"+[Dt]+"</div>" ;
        If ([Bs] > 1 ;
        "<div style='100%;height:100%;background-color:#FFFF00;color:#000000;padding-top:8px'>"+[Dt]+"</div>" ;
        "<div style='100%;height:100%;background-color:#00B050;color:#000000;padding-top:8px'>"+[Dt]+"</div>"))))
    


    2. 超链接元素:
    写完上面的代码后,这个就是“小儿科”了,如:

    = "<a href='http://somewhere/?id=" + [Prvnc Id] +"'>" + [Prvnc Nm Ch] + "</a>"
    


    3. javascript去表头:
    在Webi中合并行后,表头上出了一个尴尬的问题,那就是要么多个表头,要么就是没表头,在请教专家无果后(路过的专家们,也请指点迷津),决定上javascript大法,
    (javascript大法好啊!本人曾在sharepoint项目,屡试不爽!)
    在报表的最下边,拖一个“空白单元格”上来,按惯例,还是改成HTML,然后上脚本,搞定:

    <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
    <script>
    var count = 0;
    $('.s11 > tbody > tr').each(function()
    {
       var height = parseInt($(this).height());
       if(height == 58)
       { 
         count++;
         if(count > 1)
         {   
           $(this).remove();
         }
      }
    });
    </script>
    


    4. 报表筛选条件:
    在Webi编辑查询时,可以在下面条件区域直接拖入字段,生成查询条件,我们先搞个“提示”类型,给后边用。



    5. 报表导航:
    结合上面的“超链接元素”,就可以生成带导航功能的报表了,首先要找到目标报表的id, 这个很容易,用IE Developer或Firebug,你懂的。
    然后就是连接地址,BO提供了一个直接打开报表的连接,换上自已报表的id(iDocID=0001),加上参数,就轻松搞定。

    = "<a href='http://somewhere/businessobjects/enterprise115/desktoplaunch/opendoc/openDocument.jsp?sIDTyp=CUID&sType=wid&iDocID=0001&lsSparaPrvncid=" + [Prvnc Id] +"'>" + [Prvnc Nm Ch] + "</a>"
    

    这里要注意,条件字段要是字符型,否则不好用,切记!


  • 相关阅读:
    C# Asp.net 修改Ueditor编辑器上传图片保存路径
    Asp.net Mvc Ajax.BeginForm提交表单
    Asp.net Mvc post表单提交多个实体模型
    Asp.net Mvc action返回多个模型实体给view
    在Windows Server 2008 R2 Server中,上传视频遇到的问题(二)
    不能往Windows Server 2008 R2 Server中复制文件的解决方法
    在Windows Server 2008 R2 Server中,上传视频遇到的问题(一)
    ef codefirst 模型字段类型与sqlserver表字段类型对应概要
    c# string 扩展方法
    mvc,EntityFramework调用分页存储过程
  • 原文地址:https://www.cnblogs.com/zhongzf/p/2212089.html
Copyright © 2011-2022 走看看