2015-07-22 5 views
0

Как я могу получить доступ к повторному контролю извне? В моем случае я хочу рассчитать некоторые дополнительные значения для элементов в регуляторе повтора и обновить каждый элемент с помощью jquery.Как получить доступ к повторному управлению извне, например, через CSJS

+0

Вы можете дать элементам класс и использовать $ (". Classname") .., чтобы делать с ними что-то. – user2808054

+0

OK Я понимаю, что нужно работать. Есть ли альтернатива SSJS, которую вы, возможно, знаете? – Malin

+0

Я немного запутался - jquery - это клиентская библиотека, поэтому он должен запускаться в браузере после загрузки страницы. SSJS был бы серверным (конечно), поэтому никакой jquery, доступный там ..., где проблема? вам нужно что-то вроде jquery, но для серверной стороны? Я думаю, ответ будет просто больше SSJS – user2808054

ответ

0

В SSJS вы всегда получаете доступ к компоненту с помощью getComponent («id»). Если ваше содержимое повторения является просто представлением, чем определением источника данных представления на уровне XPage, а не повторением, и вы можете использовать идентификатор источника данных для получения объекта вида, т. Е. View1.

0

Из SSJS вы можете получить доступ к самому управлению повтором через getComponent(). Однако, если вы хотите получить доступ к компонентам в течение повтора, это становится более сложным.

Поведение по умолчанию состоит в том, чтобы создать единую «строку» компонентов для повтора, а затем, на этапе визуализации рендера, перебрать их для генерации соответствующего HTML для соответствующего количества строк (rows свойство повторного управления) из соответствующей начальной точки (first свойство повторного управления, которое может быть увеличено пейджером), выбор данных из соответствующих данных (value свойство повтора).

Если повтор имеет repeatControls="true", при загрузке страницы среда выполнения создает набор элементов управления для соответствующего количества строк (rows свойство повторного управления). Однако доступ к ним может все еще быть проблемой. Это также устранит возможность использования пейджера.

Если вы хотите манипулировать, например. соответствующие записи в режиме повтора, одним из вариантов может быть загрузка в viewScope идентификатора UNID/Note через вычисляемое свойство в каждой строке. Например.

rendered="#{javascript:if (view.isRenderingPhase()) { 
    if (idex == 1) viewScope.put("myVar", new java.util.ArrayList()); 
    viewScope.get("myVar").add(entry.getNoteID()); 
    return true; 
} else { 
    return true; 
}" 

Это инициализируется (или повторно инициализируется) переменная viewScope, если это первая строка (пожалуйста, перепроверить первый ряд имеет idex, как 1, idex будет именем переменным вы определяете для indexVar свойства контроля повторного) и добавляет NoteID в список. Таким образом, элемент 0 является идентификатором NoteID первой строки, элементом 1 - идентификатором примечания второй строки и т. Д.

Если вы хотите управлять значениями, вы можете использовать аналогичный подход, используя динамическое связывание. Существуют различные вопросы о StackOverflow о динамическом привязке для повторных элементов управления, а также сообщения в блогах, возможно, Тимом Трисконном или Джесси Галлахер.

Помимо этого, CSJS может быть самым простым способом манипулирования содержимым повтора. Просто имейте в виду, что если вы выполняете частичное обновление, refreshId которого является повторением, оно может заменить все, что вы сделали на стороне клиента.

+0

или использовать getClientID() –

Смежные вопросы