Sitecore: выбрать элементы по полю: TreelistEx - PullRequest
4 голосов
/ 30 июня 2011

У меня есть папка Sitecore с именем MyItems с элементами типа MyItem.Мне нужно запросить элементы из кода .net либо с помощью запроса sitecore, либо с помощью xpath.MyItem имеет поле MyField типа TreelistEx.Мне нужно выбрать все элементы, где MyField содержит «thevalue» (указатель другого элемента).Как я могу это сделать?

Большое спасибо

Ответы [ 3 ]

5 голосов
/ 01 июля 2011
string query = string.Format("/sitecore/content/MyItems/*[contains(@MyField,'{0}')]", thevalue);
Item[] myItems = Sitecore.Context.Database.SelectItems(query);

Я только что вытащил этот код со своего сайта и изменил названия для вашего запроса.Это довольно неэффективно, если у вас много MyItems, поэтому я не буду использовать это на странице, где производительность является ключевым факторомТот же запрос должен работать для любого поля типа списка.

1 голос
/ 26 марта 2013

Хотя вы не можете использовать функции в быстром запросе, вы можете использовать sql-подобный синтаксис с подстановочными знаками. Вот:

string query = string.Format("fast:/sitecore/content/MyItems/*[@MyField='%{0}%']", thevalue);

Правдивая история. Слово.

Источник: Страница 9 из " Использование Sitecore Fast Query ", которая, я считаю, находится за "стеной аккаунта (tm)"

Функции не поддерживаются. Однако функция contains () может быть заменяется оператором равенства строк, который содержит подстановочные знаки SQL. Например: // [содержит (@Title, 'Sitecore')] эквивалентно fast: // [@Title = '% Sitecore%'] "

0 голосов
/ 01 июля 2011

Вы также можете использовать быстрый запрос

string query = string.Format("fast:/sitecore/content/MyItems/*[contains(@MyField,'{0}')]", thevalue);

обновление: sitecore быстрый запрос не поддерживает функции, поэтому функция contains() не будет работать в этом запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...