Развернуть / свернуть, показать одну строку, в то время как остальные скрыты
Это в списке Cognos. Так что я знаю много JS, но, очевидно, недостаточно, чтобы понять это. У меня есть список, и в этом списке у меня есть иерархия, которая будет расширять несколько слоев. Я хочу, чтобы все слои начали скрываться, кроме первого. Так как то так
первый слой (показан) второй слой (скрытый) третий слой (скрытый)
Мой код JS приведен ниже, и на всю жизнь я не могу понять это. Любая помощь будет принята с благодарностью.
function StartHidden() {
var q=document.getElementById("ExpandedTable");
// get the table
tbl = q.parentNode.parentNode.parentNode.parentNode;
var isFirstRow=true;
for ( var i = 0; i < tbl.rows.length; i++) {
var trCurrent = tbl.rows; // the current row
var d = trCurrent.cells[0]; // first cell
var c = d.firstChild;
if (i < 2 || c.tagName.indexOf("IMG") != -1) {
c = c.src; // leave it visible, since it has + icon
for ( var j = 1; j < trCurrent.cells.length; j++) {
trCurrent.cells[j].width="1";
}
}
else {
trCurrent.style.display = "none"; // hide the row
}
}
}
1 ответ
Чтобы работать с объектами Cognos Javascript в отчете, вам придется использовать функцию getFormWarpRequest вместо непосредственной работы с объектом документа.
Правильный фрагмент кода должен быть:
var fW = (typeof getFormWarpRequest == "function" ?getFormWarpRequest() : document.forms["formWarpRequest"]);
// if it’s undefined, check if it is running in a portlet
if ( !fW || fW == undefined) { fW = ( formWarpRequest_THIS_ ?formWarpRequest_THIS_ : formWarpRequest_NS_ );}
Однако это только часть решения, поскольку из Cognos 8.4 объекты данных (список, кросс-таблицы) генерируются с динамическими именами и IDS. Поэтому вы должны использовать метод getElementsByTagName вместо getElementById. Пример можно найти здесь:
Ironside - IBM Cognos и JavaScript - Часть II
Дополнительный трюк, который может облегчить работу, будет работать с JQuery в Cognos. Очень хорошо задокументировано здесь:
Динамическая отчетность в Cognos с использованием jQuery
И пример, который я написал здесь:
Динамическое пользовательское исключение в Cognos с использованием jQuery
Дополнительную документацию Cognos относительно работы с javascript можно найти здесь:
Cognos - Обновление приложений JavaScript