Я работаю с Cognos v10.1. Я создаю отчет, который содержит 13 необязательных подсказок. Поскольку очень сложно собрать одно и то же на одной странице, а все подсказки необязательны, я пытаюсь написать код javascript для флажков. На основе выбора в флажках я хотел бы показать подсказки. У меня есть результат, но есть проблема с подсказкой. Страница обновляется до того, как я выберу некоторые значения в любой выбранной подсказке. Как запретить обновление страницы? Не могли бы вы предложить решение. Заранее спасибо.
Как предотвратить обновление страницы в Cognos?
Ответы (2)
Если какое-либо из приглашений Cognos является каскадным приглашением (Свойства->'Каскадный источник' не является пустым), они инициируют обновление страницы приглашения после выбора родительского приглашения.
Кроме того, любая подсказка со свойством «Автоматическая отправка», установленным на «Да», вызовет отправку страницы после выбора (при условии, что все необходимые подсказки заполнены) или обновит вашу страницу подсказки (если какая-либо требуемая подсказка еще не заполнена).
Решение Тоднаппи — это то, что я успешно использовал в подобных ситуациях, и я настоятельно рекомендую использовать его, если это возможно. Cognos javascript API ограничен в версии 10.1, но предсказуем. Нет никаких причин, по которым вы не сможете заставить решение работать так, как вы пытаетесь.
Имейте в виду, что API javascript значительно улучшен в версии 10.2, и, возможно, на него стоит обратить внимание, если у вас есть большая потребность в специально созданных страницах javascript.
Изменить: только что провел тест, в котором я скрыл/показал необязательное приглашение на странице приглашения:
Элемент 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>
Страница при первой загрузке:
После нажатия (без обновления):
Я бы рекомендовал работать в рамках Cognos, а не пытаться писать JS на заказ. Вы неизбежно столкнетесь с некоторыми из их встроенных функций, что приведет к странному поведению, которое будет иметь кросс-версию и потенциально кросс-браузерные проблемы.
Вместо этого, почему бы не 2 подсказки:
- Страница 1: подсказки для флажков с использованием подсказок со значением, установленным на флажок. Свяжите каждый из них с переменной.
- Страница 2: Условно отображаемые подсказки на основе переменных.