1.针对list多表头开发的技巧。
多表头的正确的做法是表的结构要合理,用交叉表来实现,但对于list数据的实现的方法是用css层也可以。
本例的方法是手工制作表头,然后在解锁页面的情况下,用文本来实现表头的做法。
2.如何通过本地文件系统导入导出报表1 首先,注册1fa.dllCd “G:\cognos\c8\bin”Regsvr32 1fa.dll2 打开IE,点击菜单栏工具->Internet选项,在弹出的对话框中点击安全选项卡。
选中受信任的站点,点击站点按钮将BI服务器的地址添加到受信任站点中,同时将安全级别设置为低3 进入ResportStudio工具,点击工具->选项,在弹出的选项对话框中点击“高级选项”选项卡。
选中允许访问本地文件,点击确定3.隐藏报表右上角上图标的css1.,进入目录cognos\c8\templates\ps\portal2.,找到system.xml文件,然后打开在<system> 里添加如下内容,重启cognos<param name="ui_hide"><RV_HEADER/><RV_HEADER_TITLE/><RV_HEADER_MENU/><RV_TOOLBAR_BUTTONS_KEEP_THIS_VERSION/><RV_TOOLBAR_BUTTONS_HISTORY/><RV_TOOLBAR_BUTTONS_RUN/><RV_TOOLBAR_BUTTONS_DRILLDOWN/><RV_TOOLBAR_BUTTONS_DRILLUP/><RV_TOOLBAR_BUTTONS_GOTO/><RV_TOOLBAR_BUTTONS_ADD_THIS_REPORT/><RV_TOOLBAR_BUTTONS_WATCH_NEW_VERSIONS/><CRN_HEADER_OPTIONS_rs/><CRN_HEADER_OPTIONS_ps/><CRN_HEADER_OPTIONS_qs/></param>备注:目前发现效果出现,但是没有reportstudio的菜单。
4.列表隔行、列显示不同颜色1、首先右键点击列表-->【应用表格样式】,如下图2、选择风格"行1",在下方右键弹出颜色设置,如下图3、效果如下:4、隔列显示不同颜色,【应用表格样式】-->请选择【列1】,效果如下--------------------------------------------------------------同样,交叉表也可以这样操作,选择样式和自己设置颜色。
5.加序号running_count()6.导出excel pdf 代码图片在我的文档文件夹下。
<script language="javascript">function getObjectName(){return "oCV" + document. getElementById("cv.id").value;}function expExcel(){var objName = getObjectName();eval(objName + ".getRV().viewReport(\'XLWA\');");}</script><img src="/cognos8/samples/images/导出excel.gif" onclick="expExcel()"><script language="javascript">function getObjectName(){return "oCV" + document. getElementById("cv.id").value;}function expPDF(){var objName = getObjectName();eval(objName + ".getRV().viewReport(\'PDF\');");}</script><img src="/cognos8/samples/images/导出pdf.gif" onclick="expPDF()">7.报表分页8.关于报表提示页面的提示多选的问题一定要在报表页面对这个变量用in来表示否则不能多选9.报表中的级联提示突然想起来,昨晚有人发帖问级联提示的问题,说了演示个小例子在日志里,start now!~~~级联提示,就是多个提示联合使用,而提示之间又具有关联性。
为方面理解,还是以时间维度为例:加入用户在提示1中选择2010年这个成员,则提示2中自动展示出2010年下面的所有子成员;用户再在提示2中选择某个子成员后,提示3中会展示出该子成员的所有子成员……此乃级联提示~操作过程:1.拖入可插入对象-> 工具箱-> 值提示;2.在弹出提示向导中,创建新参数-> 输入参数值(year)-> 下一步-> 创建参数化过滤器-> 数据包项目->选择时间维度中的year 层-> 完成;3.为方便展示,修改值提示的属性如下:4.重复1-3步,输入参数为month,数据包项目-> 选择时间维度中的month 层,并修改属性值,如下图:5.再设一级,重复1-3步,输入参数为day,数据包项目-> 选择时间维度中的day 层,并修改属性值:来吧,我们看看运行结果:1.初始结果2.选择2010年后的结果3.再选择2010年05月后的结果当然,我这里使用的都是值提示,根据需要还可以其他的提示框~~!10.利用js重写右键菜单昨天我写了一个利用JS禁用Cognos右键菜单,下面的JS可以实现重写Cognos的右键菜单。
只要将下面的代码拷到一个HTML项里即可<!--菜单样式--><STYLE type=text/css>.cMenu {BORDER-RIGHT: #000000 1px solid;BORDER-TOP: #000000 1px solid;FONT-WEIGHT: normal;FONT-SIZE: 14px;VISIBILITY: hidden;BORDER-LEFT: #000000 1px solid;WIDTH: 150px;CURSOR: default;COLOR: #000000;LINE-HEIGHT: 20px;BORDER-BOTTOM: #000000 1px solid;FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;POSITION: absolute;BACKGROUND-COLOR: #eeeeff}.menuitems {PADDING-RIGHT: 5px;PADDING-LEFT: 5px}</STYLE><DIV class=cMenu id="contextMenu" onmouseover=highLightMenu() onmouseout=lowLightMenu()><DIV class=menuitems clickcall="alert('查看历史执行情况');">查看历史执行情况</DIV><DIV class=menuitems clickcall="alert('查看批注');">查看批注</DIV><DIV class=menuitems clickcall="alert('插入/修改批注');">插入/修改批注</DIV><HR color=#aaaaaa size="0"><DIV class=menuitems clickcall="alert('关于');">关于</DIV></DIV><SCRIPT type="text/javascript">var contextMenu = document.getElementById("contextMenu");function getObjectName(){return document.getElementById("cv.id").value;}function getRVContent(){var objName = getObjectName();return eval("document.getElementById('RVContent" + objName + "');");}function overWriteRightClick()//重写弹出菜单{var objName = getObjectName();eval("oCV" + objName + ".rvMainWnd.displayContextMenu = displayContextMenu;");}function disableRightClick(){var objName = getObjectName();eval("oCV" + objName + ".bCanUseCognosViewerContextMenu = false;");}/*菜单相关函数start*/function displayContextMenu(evt) {evt = (evt) ? evt : ((event) ? event : null);hideContextMenu();var rightedge = getRVContent().clientWidth - evt.clientX;var bottomedge = getRVContent().clientHeight - evt.clientY;if (rightedge < contextMenu.offsetWidth)contextMenu.style.left = getRVContent().scrollLeft + evt.clientX - contextMenu.offsetWidth - getRVContent().offsetLeft;elsecontextMenu.style.left = getRVContent().scrollLeft + evt.clientX - getRVContent().offsetLeft;if (bottomedge < contextMenu.offsetHeight)contextMenu.style.top = getRVContent().scrollTop + evt.clientY - contextMenu.offsetHeight - getRVContent().offsetT op;elsecontextMenu.style.top = getRVContent().scrollTop + evt.clientY - getRVContent().offsetTop;contextMenu.style.visibility = "visible";return false;}function hideContextMenu() {var object = event.srcElement;contextMenu.style.visibility = "hidden";if (object.className == "menuitems") {eval(object.clickcall);}}function highLightMenu() {var object = event.srcElement;if (object.className == "menuitems") {object.style.backgroundColor = "highlight";object.style.color = "white";}}function lowLightMenu() {var object = event.srcElement;if (object.className == "menuitems") {object.style.backgroundColor = "";object.style.color = "black";}}/*菜单相关函数end*/overWriteRightClick();document.body.onclick = hideContextMenu;</SCRIPT>下面我来着介绍一下这段代码,前面的style和div主要是定义菜单的现实样式,其中引用样式为menuitems 的div中有个clickcall属性,这个属性就是当点击此菜单项时调用的JS函数,可以将其改为自己的函数,我这里只是简单的调用了个alert。