С Новым годом! Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/49: Рейтинг темы: голосов - 49, средняя оценка - 4.69
rrr

Управление Видимостью

24.06.2013, 17:33. Показов 9640. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Коллеги, подскажите, pls, в чем может быть дело. Пробую показывать/прятать элемент liMembers (типа listbox) в зависимости от содержимого элемента cbType (типа combobox). Если содержимое "Договор", то показывать. если нет, то прятать.

Пробую на стороне клиента

var idType = #{java script:getClientId("cbType")};
var idMembers = #{java script:getClientId("lbMembers")};


LotusScript
1
2
3
4
5
6
7
var ourValue = document.getElementById(idType).value;
var visibility;
if (ourValue == Договор)
visibility = visible;
else
visibility = hidden;
document.getElementById(idMembers).style.visibility=visibility;
и на стороне сервера


LotusScript
1
2
3
4
5
6
7
var combo:javax.faces.component.UIComponent = getComponent("cbType");
var comboVal = combo.getValue();
var lbMembers:javax.faces.component.UIComponent = getComponent("lblMembers");
if (comboVal == "Договор")
lbMembers.setRendered(true);
else
lbMembers.setRendered(false);
В обоих случаях получаю сообщение браузера "Непредвиденная ошибка среды выполнения":
Источник ошибки
Имя страницы:/Document.xsp
Исключительная ситуация
? Трассировка стека

Что может быть не так?

UPD: поместил оба элемента на одну панель, переключил обновление на частичное, только панели - перестало ругаться, но и работать не начало. Что еще может быть?
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.06.2013, 17:33
Ответы с готовыми решениями:

Управление видимостью
1с77 Есть некий документ, в форме которого несколько слоев. При открытии документа (в процедуре ПриОткрытии) анализируется один из...

Управление видимостью Image
Доброго времени суток! Подскажите пожалуйста! Как автоматизировать такой процесс: На форме 6 Image, 4 из них имеют практически...

Управление видимостью GroupBox
Здравствуйте. Подскажите как при нажатии на Button можно было скрывать и отображать groupbox и все компоненты которые находятся в нем?

10
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
24.06.2013, 18:03
в трассировке, кот. отсут. и написано - что не так
0
rrr
24.06.2013, 18:13
Поместил элементы на панель и переключил форму на обновление только панели. Сообщение об ошибке пропало, но lbMembers все время виден. Может, еще что подскажете?
0 / 0 / 0
Регистрация: 19.03.2011
Сообщений: 205
24.06.2013, 21:32
Посмотри пример
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
25.06.2013, 11:11
Как-то сложно все пишите/выдумываете.

Server JS
<!--shcode--><pre><code class=java>getComponent("elementName").g etValue();
getComponent("elementName").setValue("so methyng");[/CODE]
Note: you cannot access or set fields with visible=false. If you want to work with a field, but dont want to display it, give the field a CSS class with "display:none".
Get submitted value before validation
<!--shcode--><pre><code class=java>getComponent("elementName").g etSubmittedValue()[/CODE]
Client JS
<!--shcode--><pre><code class=java>document.getElementById("#{id :elementID}").value;[/CODE]
Get a computed fields value:
<!--shcode--><pre><code class=java>document.getElementById("#{id :elementID}").innerHTML;[/CODE]
Код скрытия надо писать сразу в свойстве Visible компонента. Например так

Code
1
2
var tmp = getComponent("inputText8").value
tmp == "Абонентский"
и обновлять его при помощи Partial refresh или Submit
0
rrr
25.06.2013, 17:02
Да, так попроще будет... Спасибо!
0 / 0 / 0
Регистрация: 19.03.2011
Сообщений: 205
25.06.2013, 17:15
Цитата Сообщение от NickProstoNick
Код скрытия надо писать сразу в свойстве Visible компонента. Например так
var tmp = getComponent("inputText8").value
tmp == "Абонентский"
и обновлять его при помощи Partial refresh или Submit
И получить ошибку, если "inputText8" скрыт
Для SSJS, в коде скрытия (Visible компонента) удобно проверять Scope variable. Работает при полном и частичном обновлении.
Для CSJS, Visible компонента - Static и управлять видимостью:
document.getElementById("#{id:xxx}").sty le.display = "inline"
document.getElementById("#{id:xxx}").sty le.display = "none"
но это только при Partial Refresh компонента.
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
25.06.2013, 19:29
Цитата Сообщение от alexas
И получить ошибку, если "inputText8" скрыт ^_^
Для SSJS, в коде скрытия (Visible компонента) удобно проверять Scope variable. Работает при полном и частичном обновлении.
Для CSJS, Visible компонента - Static и управлять видимостью:
document.getElementById("#{id:xxx}").sty le.display = "inline"
document.getElementById("#{id:xxx}").sty le.display = "none"
но это только при Partial Refresh компонента.
Очень интересно. Видимое поле ссылается на невидимое... это как?
Всегда должен быть видимый набор полей, от которого "пляшут" дальше.

alexas, явно не читал что написано:
Note: you cannot access or set fields with visible=false. If you want to work with a field, but dont want to display it, give the field a CSS class with "display:none".

И собственно Visible это не просто скрытие компонента, это так сказать "физическое удаление" его со станицы. Т.е. компонент не подгружает данные. Выгода от этого очевидная.
Одно дело спрятать просто текстовое поле - другое дело спрятать вид или ричтекст.
Так что я не был бы на столько уверенным, что твое решение лучше. И уж тем более так настоятельно не рекомендовал бы его.

Мой пример ссылается на видимое поле. И я написал что это пример.

А вообще, если правильно все делать - ошибки не будет. Должна быть правильно построена логика скрытия.
1. можно обновлять панель/таблицу/ячейку и т.д., в которой находится компонент
2. можно обновлять всю страницу
3. можно вычислять какой компонент нужно обновить

Но чтоб не заморачиваться - лучше обновлять группу компонентов (панели, таблицы и т.д.), а не городить огороды из SSJS, CSJS и CSS. Сам потом с ума сойдешь, когда забудешь что и для чего писал
Или считаешь что большое количество кода показывает крутизну программиста?
0
0 / 0 / 0
Регистрация: 19.03.2011
Сообщений: 205
25.06.2013, 21:32
NickProstoNick конечно, если логика скрытия нескольких элементов одинакова, надо управлять всей группой. Я и не утверждал обратного.


Цитата Сообщение от NickProstoNick
alexas, явно не читал что написано:
Note: you cannot access or set fields with visible=false. If you want to work with a field, but dont want to display it, give the field a CSS class with "display:none".
Вкурсе. А вот рабочий пример CSJS на скорую руку (примерно, о чем спрашивал rrr)

.SpoilerTarget">Спойлер: Раскрывающийся Текст


Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:panel id="pane">
<xp:listBox id="liMembers">
<xp:selectItem itemLabel="Untitled"></xp:selectItem>
<xp:selectItem itemLabel="Untitled"></xp:selectItem>
</xp:listBox>
<xp:label id="label1"></xp:label></xp:panel>
<xp:br></xp:br>
<xp:comboBox id="cbTipe">
<xp:selectItem itemLabel="Договор" itemValue="Договор"></xp:selectItem>
<xp:selectItem itemLabel="Недоговор" itemValue="Недоговор"></xp:selectItem>
<xp:eventHandler event="onchange" submit="true"
refreshMode="partial" refreshId="pane">
<xp:thys.onComplete><![CDATA[var check = document.getElementById("#{id:cbTipe}").value;
if(check == "Договор"){
document.getElementById("#{id:pane}").style.display = "inline";
}
else {
document.getElementById("#{id:pane}").style.display = "none";
};]]></xp:thys.onComplete>
<xp:thys.script>
<xp:executeClientScript>
<xp:thys.script><![CDATA[if(document.getElementById("#{id:cbTipe}").value == "Документ"){
document.getElementById("#{id:pane}").style.display = "inline";
}
else {
document.getElementById("#{id:pane}").style.display = "none";
} ]]></xp:thys.script>
</xp:executeClientScript>
</xp:thys.script>
</xp:eventHandler>
</xp:comboBox></xp:view>
А по поводу
var tmp = getComponent("inputText8").value
tmp == "Абонентский"
я имел ввиду, что товарищ применит этот код для скрытия "влоб" и получит ошибку (судя по вопросу - изучение хепагов в самом начале, а логика программирования в них сильно отличается от классических нотусов)
0
rrr
26.06.2013, 12:34
Применил. Ошибки нет. Что я делаю не так? ^_^
0 / 0 / 0
Регистрация: 19.03.2011
Сообщений: 205
26.06.2013, 12:53
Цитата Сообщение от rrr
Применил. Ошибки нет. Что я делаю не так? ;)
Ну и хорошо. Значит врубился в логику или звезды так встали ^_^
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.06.2013, 12:53
Помогаю со студенческими работами здесь

Управление видимостью формы
Как сделать, чтобы при запуске приложения главная форма не показывалась автоматически. Пробовал разные варианты: 1. В конструкторе формы...

Управление видимостью контролла
здравствуйте, собственно критично нужно отслеживать отображаемость контрола на экране для выполнения с ним определенных действий, если...

Управление видимостью кнопок
Ребят, необходимо реализовать вот такую не простую задачу. Увы, мой склад ума не позваляет мне это сделать, запутался окончательно. ...

Управление видимостью дочернего процесса
Здравствуйте. Консольное приложение можно сделать скрытым или видимым, например, так: #include &lt;WS2tcpip.h&gt; int main() { ...

Управление видимостью Полем формы?
Как в форме организовать так, что при значении поля = &quot;Отказ&quot; данное поле отображалось, а при любом другом значении - данное поле...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru