LimeReport Forum
General Category | Основное => Discussion | Обсуждение => Topic started by: Maks on October 01, 2020, 09:06:02 am
-
Добрый день!
Структура отчета:
- Reportpage1
- DataBand1
- TextItem1
- Reportpage2
- DataBand2
- TextItem2
Создал 2 страницы(ReportPage1 и ReportPage2), на ReportPage1 первый вариант отчета для первого типа пользователей, на ReportPage2- второй вариант для другого типа пользователей. Мне нужно печатать по-порядку, сначала полностью отчет для первого типа пользователей, потом для второго. В предыдущем топике решали вопрос о пустой странице, которая теперь успешно не печатается. ( http://limereport.ru/forum/index.php?topic=389.0 )
Для проверки типа пользователей использовал
$S{
if($D{model.typeUser} ==1 ){
... (текст отчета с вставками из $D{model}
}
}
Аналогично и для 2го типа на ReportPage2
Текст, который хранится в TextItem, достаточно большой, при использовании скриптов прямо в TextItem приходится использовать кавычки и сливать все в одну строчку, а это очень не удобно, и я решил прибегнуть к глобальной панельке "Script", там проверять тип пользователя и в зависимости от этого занулять TextItem1.content/ скрывать (TextItem1.isVisible = false) или вовсе его как-то удалять.
Нашел скриншот на этом сайте с примером и решил сделать по типу него.
Reportpage1_TextItem1.afterRender.connect(checkType1);
Reportpage2_TextItem1.afterRender.connect(checkType2);
function checkType1(){
if(getField("model.typeUser") != 1){
Reportpage1_DataBand1.isVisible = false;
Reportpage1_TextItem1.content = "";
}
}
function checkType2(){
if(getField("model.typeUser") != 2){
Reportpage2_DataBand1.isVisible = false;
Reportpage2_TextItem1.content = "";
}
}
Но оно почему-то не работает, так же пробовал и с beforeRender и писал условие вне функции, ничего не меняется.
Что прописать в Script, чтобы проверялись условия и в зависимости от этого скрывались/занулялись/удалялись TextItem'ы?
-
Приветствую!
Сейчас уже не вспомню почему, но я не выбрасываю события на элементах отчета :)
События выбрасываюся только у бандов и страниц
Вы можете сесть на beforeRender у банда и скрывать его элементы по условию.
Видимо я решил что обработка событий айтемов в скрипте лишняя :) ибо они сами себя могут обслуживать :)
-
Спасибо, помогло :)
Какой вариант скрытия лучше (производительней) ?
Reportpage1_TextItem1.content = ""; и поставить галку у TextItem hideIfEmpty
или
Reportpage1_DataBand1.isVisible = false;
или есть еще варианты?
-
На данный момент разницы по производительности особой нет, но если на банде много элементов, то проще isVisible у банда установить.
Ваш вопрос навел меня на размышления и в дальнейшем я просто не буду обрабатывать банд у которого стоит флаг isVisible = false