Ответ 1
Обратите внимание на post.
Как это работает:
У нас есть рендеринг, перечисляющий выбранные элементы в TreeSelect в текущем элементе. В нашем случае мы называем их "Метки" (1)
Мы добавили кнопку редактора полей в компонент, чтобы редактор мог изменять выбранные элементы. (2) (Как описано, например, Добавление настраиваемого компонента)
Когда редактор нажимает (2) окно редактора (3), открывается в диалоговом окне. Редактор может выбирать различные элементы (называемые тегами в нашем случае) с помощью TreeSelect.
Когда редактор нажимает кнопку ok (4), значения устанавливаются.
Теперь к проблеме:
Значения на самом деле устанавливаются по мере их сохранения, когда редактор нажимает кнопку "Сохранить", но мы хотим, чтобы наш список на странице (1) сразу отражал установленные элементы, когда редактор нажимает кнопку ok (4), т.е. до чтобы фактически сохранить весь предмет.
Как мы это достигаем?
(Я нахожусь в контакте с поддержкой Sitecore, но до сих пор я не получил никаких ответов...)
Обновление После большого разговора с поддержкой у нас по-прежнему нет полезного решения.
Мы попытались превратить его в средство визуализации полей, отображающее ссылки. Что получилось:
<command name="webedit:fieldeditor" type="Sitecore.Shell.Applications.WebEdit.Commands.FieldEditor, Sitecore.Client"/>
) и установить Нажмите кнопку на webedit:fieldeditor(command={3473DDA1-2983-493C-AF7A-054C75AA7AD3},fields=NameOfField
, где указатель указывает на себя и значок "Значок", установлен на нем.)Что не получилось:
Проблема с поддержкой превратилась в запрос функции, позволяющий серверу участвовать в рендеринге поля, а не просто отправлять новое значение для обновления JavaScript. Сервер делает первый рендеринг, поэтому, когда он уже участвует в обновлении, ему также должно быть разрешено выполнять следующие действия.
Мы решили не тратить больше времени на это прямо сейчас (у нас есть и другие вещи, чтобы сделать тоже). У меня плохой опыт работы с редактором, поскольку поле не обновляется до тех пор, пока редактор не сохранит этот элемент.
Тем не менее у нас нет подходящего решения для этой проблемы. Если вы хотите продолжить работу над ним и хотите получить ссылку на мою проблему, это 439059.
Обратите внимание на post.
Как это работает:
Это может быть не полезно здесь. Я сделал это на обычных сайтах, но не в Sitecore. Но, здесь одна возможность....
Это ситуация, когда вы должны передать функцию обратного вызова в всплывающее окно дочернего элемента. Этот обратный вызов заставит окно вызывающего/родительского окна повторно читать/повторно загружать информацию, которая была просто обновлена дочерним элементом.
Пример: Пользователь нажимает (2), чтобы открыть окно редактора (3) (окно редактора открывается и функция обратного вызова передается как параметр) Пользователь нажимает кнопку "ОК" (4). Обработчик событий кнопки "ОК" обновляет изменения, затем вызывает функцию обратного вызова, которая повторно загружает обновленную информацию и закрывает всплывающее окно. Когда всплывающее окно закрывается, родительское окно теперь отображает информацию, которую только что обновил всплывающее окно/редактор.
Это требует разработки javascript (jquery) на стороне клиента, но вполне нормально.