как сопоставить имя поля с другим именем поля

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

 select @#h1#, @#Title#
 from /sitecore/Content/Home//*[@#h1# !="@#Title#"];

 update set @#h1# = @#Title# from /sitecore/Content/Home//*[@#Title# = "<id>"];

Что мне здесь не хватает?


person Keith    schedule 28.04.2014    source источник
comment
Глупый вопрос наверное. Но зачем вообще 2 поля?   -  person Martin Davies    schedule 28.04.2014
comment
Таким образом, система была построена с использованием этих двух полей.   -  person Keith    schedule 28.04.2014


Ответы (2)


В этой статье рассказывается о подключении к событию item:saving, которое позволяет сравнивать значения полей элемента до и после изменений:

http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2010/11/Intercepting-Item-Updates-with-Sitecore.aspx

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

person Martin Davies    schedule 29.04.2014

Мне приходилось делать что-то подобное, когда добавлялось новое поле, и мы хотели установить начальное значение, равное существующему полю. Это может быть ошибка в Sitecore Rocks, но я обнаружил, что она обновляет поле только тогда, когда статическое значение является частью запроса.

Когда я запускал @#h1# = @#Title#, анализатор запросов возвращал правильное количество обновленных элементов, но на самом деле никакие значения не обновлялись. Однако @#h1# = '<id>' работал отлично. Попробовав несколько вещей, я обнаружил, что это делает то, что я хотел.

update set @#h1# = '' + @#Title# from /sitecore/Content/Home//*[@#Title# = "<id>"];

Надеюсь, это поможет.

person thadmiller    schedule 02.05.2014