Как предотвратить обновление страницы в Cognos?

Я работаю с Cognos v10.1. Я создаю отчет, который содержит 13 необязательных подсказок. Поскольку очень сложно собрать одно и то же на одной странице, а все подсказки необязательны, я пытаюсь написать код javascript для флажков. На основе выбора в флажках я хотел бы показать подсказки. У меня есть результат, но есть проблема с подсказкой. Страница обновляется до того, как я выберу некоторые значения в любой выбранной подсказке. Как запретить обновление страницы? Не могли бы вы предложить решение. Заранее спасибо.


person arunpandiyarajhen    schedule 01.03.2014    source источник


Ответы (2)


Если какое-либо из приглашений Cognos является каскадным приглашением (Свойства->'Каскадный источник' не является пустым), они инициируют обновление страницы приглашения после выбора родительского приглашения.

Кроме того, любая подсказка со свойством «Автоматическая отправка», установленным на «Да», вызовет отправку страницы после выбора (при условии, что все необходимые подсказки заполнены) или обновит вашу страницу подсказки (если какая-либо требуемая подсказка еще не заполнена).

Решение Тоднаппи — это то, что я успешно использовал в подобных ситуациях, и я настоятельно рекомендую использовать его, если это возможно. Cognos javascript API ограничен в версии 10.1, но предсказуем. Нет никаких причин, по которым вы не сможете заставить решение работать так, как вы пытаетесь.

Имейте в виду, что API javascript значительно улучшен в версии 10.2, и, возможно, на него стоит обратить внимание, если у вас есть большая потребность в специально созданных страницах javascript.

Изменить: только что провел тест, в котором я скрыл/показал необязательное приглашение на странице приглашения:

Страница подсказок в Report Studio

Элемент HTML перед скрытой областью:

<script>
function checkDisplayPeriod() {
    var chkBox = document.getElementById("checkBox1");
    var divPeriod = document.getElementById("divHidePeriodPrompt");
    if (chkBox.checked) {
        divPeriod.style.display = 'none';
    } else {
        divPeriod.style.display = 'block';
    }
} 
</script>
<input type="checkbox" id="checkBox1" onclick="checkDisplayPeriod()" />
<div id="divHidePeriodPrompt">

Код после области:

</div>

Страница при первой загрузке: Подсказка о первоначальной загрузке страницы

После нажатия (без обновления): Запрашивать страницу после нажатия

person Damienknight    schedule 03.03.2014
comment
Хорошее решение, которое должно оказаться совместимым с разными версиями. Концепция скрытия/отображения блока div также может использоваться по-разному — я часто использую ее для подсказок на странице отчета. - person toddsonofodin; 04.03.2014

Я бы рекомендовал работать в рамках Cognos, а не пытаться писать JS на заказ. Вы неизбежно столкнетесь с некоторыми из их встроенных функций, что приведет к странному поведению, которое будет иметь кросс-версию и потенциально кросс-браузерные проблемы.

Вместо этого, почему бы не 2 подсказки:

  • Страница 1: подсказки для флажков с использованием подсказок со значением, установленным на флажок. Свяжите каждый из них с переменной.
  • Страница 2: Условно отображаемые подсказки на основе переменных.
person toddsonofodin    schedule 03.03.2014
comment
Я согласен. Я сделал то же самое в отчете, но пользователь требует чего-то другого, чего можно было добиться только с помощью комбинации JS и Cognos. - person arunpandiyarajhen; 03.03.2014