马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
cognos的排序做的实在是不怎么地,这两天借着比赛一时兴起,利用JavaScript实现了个排序的方法,个人感觉用起来比较方便,所以特地和大家分享一下 首先来说一下排序的方法,思路如下:增加一个数据项,该数据项根据参数进行判断,显示那个数据项的数据。然后将新增的数据项拖到列表中进行排序。再利用JavaScript将参数传递过去,实现排序。
开发界面如下:
Cognos的排序做的实在是不怎么地,这两天借着比赛一时兴起,利用JavaScript实现了个排序的方法,个人感觉用起来比较方便,所以特地和大家分享一下。(需要结合视频教程一起看) 首先来说一下排序的方法,思路如下:增加一个数据项,该数据项根据参数进行判断,显示那个数据项的数据。然后将新增的数据项拖到列表中进行排序。再利用JavaScript将参数传递过去,实现排序。
开发界面如下:
其中排序初始化HTML为核心代码,如下: [AppleScript] 纯文本查看 复制代码 <script type="text/javascript">
var cvObject = eval("oCV" + getObjectName());
var lastSelected;
function getObjectName()
{
return document.getElementById("cv.id").value;
}
function getRVContent()
{
var objName = getObjectName();
return eval("document.getElementById('RVContent" + objName + "');");
}
function initSort(sortTableId)
{
/*说明:若报表中有提交操作的组件,比如完成button或自动提交的组件,则保持注释,若无,则将注释内容打开。这个很重要
cvObject.preProcessControlArray = [];
cvObject.gbPromptRequestSubmitted = false;
cvObject.bCanFinish = true;
cvObject.bNextPage = true;
cvObject.pageNavigationObserverArray = [];
cvObject.rangeObserverArray = [];
cvObject.multipleObserverArray = [];
cvObject.datePickerObserverArray = [];
cvObject.hasPromptKeyDown = false;
*/
initSortColumn(getSortTable(sortTableId, getRVContent()));
}
function getSortTable(sortTableId, rvContent)
{
var sortTable;
var tables = rvContent.getElementsByTagName("table");
for (var i = 0; i < tables.length; i++)
{
if (tables[i].getAttribute("LID") == sortTableId)
{
sortTable = tables[i];
break;
}
}
return sortTable;
}
function initSortColumn(sortTable)
{
var headRow = sortTable.tBodies[0].rows[0];
var divs,ascendDiv,descendDiv,cell;
var sortType = document.getElementById("sort_Type").value;
var sortColumn = document.getElementById("sort_Column").value;
for (var i = 0; i < headRow.cells.length; i++)
{
cell = headRow.cells[i];
divs = cell.getElementsByTagName("DIV");
for (var j = 0; j < divs.length; j++)
{
if (divs[j].getAttribute("sortcolumn") != null)
{
divs[j].style.float="left";
if (divs[j].getAttribute("sortcolumn") == sortColumn)
{
if (sortType == 1)
{
ascendDiv = "<div onclick = \"sortColumn(1,'" + divs[j].getAttribute("sortcolumn") + "')\" class=\"sortColumAscendOver\"></div>";
descendDiv = "<div onclick = \"sortColumn(-1,'" + divs[j].getAttribute("sortcolumn") + "')\" class=\"sortColumDescendOut\"></div>";
} else
{
ascendDiv = "<div onclick = \"sortColumn(1,'" + divs[j].getAttribute("sortcolumn") + "')\" class=\"sortColumAscendOut\"></div>";
descendDiv = "<div onclick = \"sortColumn(-1,'" + divs[j].getAttribute("sortcolumn") + "')\" class=\"sortColumDescendOver\"></div>";
}
} else
{
ascendDiv = "<div onclick = \"sortColumn(1,'" + divs[j].getAttribute("sortcolumn") + "')\" class=\"sortColumAscendOut\"></div>";
descendDiv = "<div onclick = \"sortColumn(-1,'" + divs[j].getAttribute("sortcolumn") + "')\" class=\"sortColumDescendOut\"></div>";
}
divs[j].innerHTML = ascendDiv + descendDiv;
break;
}
}
}
}
function sortColumn(sortType, sortColumn)
{
var oRequest = new CCognosViewerRequest("forward");
oRequest.addParameter("p_sortType", sortType);
oRequest.addParameter("p_sortColumn", sortColumn);
cvObject.submitPromptValues(oRequest);
}
initSort("列表1");
</script>
<style type="text/css">
.sortColumAscendOver {
width: 20px;
height: 20px;
background-image: url( "../pat/images/sortAscending.gif" );
background-position: center;
background-repeat: no-repeat;
float:right;
cursor: pointer;
}
.sortColumAscendOut {
width: 20px;
height: 20px;
background-image: url( "../pat/images/sortAscending_disabled.gif" );
background-position: center;
background-repeat: no-repeat;
float:right;
cursor: pointer;
}
.sortColumDescendOver {
width: 20px;
height: 20px;
background-image: url( "../pat/images/sortDescending.gif" );
background-position: center;
background-repeat: no-repeat;
float:right;
cursor: pointer;
}
.sortColumDescendOut {
width: 20px;
height: 20px;
background-image: url( "../pat/images/sortDescending_disabled.gif" );
background-position: center;
background-repeat: no-repeat;
float:right;
cursor: pointer;
}
</style>
其中排序参数内容如下:
'<input type="hidden" id="sort_Type" name="sort_Type" value="'+ParamValue('sortType')+'"/><input type="hidden" id="sort_Column" name="sort_Column" value="'+ParamValue('sortColumn')+'"/>'
使用报表表达式来获取传递过来的参数值,其中
sortTyp表示升序还是降序
sortColumn表示要进行排序的字段
排序标记内容如下:
<DIV sortcolumn="CURRENT_EMPLOYEE_NUMBER"> </DIV>
其中sortcolumn表示该排序针对的字段是CURRENT_EMPLOYEE_NUMBER,根据需要增加排序的字段。
排序的最终效果如下图:
|