众做周知,cognos的值提示框丑得一B,还不能设置位置,大小等属性,网上说的又是改变里面的选项.
我就直接写了几个函数去替换了值提示框的功能,样式的话,想怎么换怎么换
那么就有两个问题了:
1.值提示框内的选项从何而来;
2.如何将值传递进报表;
第一个问题,提示框的选项从何而来呢?
答:从表格内部来,拖一个表格,只需要你制的那一列就行
不加查询条件的话,里面会显示所有的年月可选值,接着就需要从表格内部提取数据了,
这个函数:
function GetData(n) {
var arr = new Object();
arr.data = [];//存放value值(表格第二列)
arr.value = [];//存放显示值(表格第一列)
arr.areaAttr = [];//备用(表格第三列)
if ($("table[LID=列表" + n + "RS]").length != 0) {
GetTdText('列表' + n + 'RS');//取表格里面的数据到定义的数组中
}//判断表格的ID
else {
GetTdText('列表' + n + '_NS_');//取表格里面的数据到定义的数组中
}
function GetTdText(td) {//表格第一列为显示值,第二列为写入URL的值
var tab = $("table[LID=" + td + "]");
var lid = tab.children().children("tr");
tab.css("display", "none");//隐藏表格
for (var i = 1; i < lid.length; i++) {
var trCurrent = lid.eq(i);
var tds = trCurrent.children("td");
for (var t = 0; t < tds.length; t++) {
var tdCurrent = tds.eq(t);
var tdText = tdCurrent.children().text();
if (t == 0) {//取第一列
arr.value.push(tdText)
}
else if (t == 1) {//取第二列
arr.data.push(tdText)
}
else if (t == 2) {
tdText = parseInt(tdText)
attr.areaAttr.push(tdText)
}
}
}
}//获取表格内容函数
return arr;
}
获取到数据后,添加到你预先设置好的下拉框内部;
function CreatOption_Year_Month(val, id) {/val:表格的序号;id:添加到哪个地方;用于年月的组合/
var f1 = GetData(val)
/*获取可用时间*/
for (var i = 0; i <= f1.data.length - 1; i++) {
//添加下拉选项
var $list = $("<option value=" +f1.value[i] + f1.data[i] + ">" + f1.value[i] + "年" + f1.data[i]+ "月</option>");
$list.appendTo($(id));
}
/*添加时间到下拉框*/
}
,接着就用我上篇文章写的传参函数就行了
如图