В предыдущем сообщении, я упомянул XML-элемент DataFolderElements. Он позволяет группировать элементы данных определенного типа, представленные в дереве с помощью XML-элемента DataElements по одному из полей элемента данных.
В нашем примере, он группирует элементы данных типа Composite.Community.Blog.Entries по дате (поле Date).
Соответственно, если этот элемент убрать...
...то записи блога будут представлены без группировки.
DataFolderElements в иерархии является предком для DataElements и должен указывать на тип данных, который представляет DataElements (в нашем примере - это Composite.Community.Blog.Entries.)
Вот какие атрибуты вы должны или можете указать для DataFolderElements:
Обязательные:
Необязательные:
Следует отметить, что группировать можно не по одному, а по нескольким полям. В таком случае можно вкладывать DataFolderElements друг в друга, вкладывая в последний из них - нужный нам DataElements.
Корневой DataFolderElements настраивается при помощи указанных выше атрибутов, а вот любой дочерний (по отношению к корневому) DataFolderElements имеет свои особенности.
Во-первых, для него не нужно указывать тип данных (атрибут Type) - он задан в корневом DataFolderElements.
Во-вторых, у дочернего DataFolderElements можно указать еще один необязательный атрибут (которого нет у корневого):
Мы можем, например, сгруппировать записи блога не только по дате, но и, скажем, по ярлыкам (поле Tags):
… чтобы получить вот такую структуру:
Далее мы рассмотрим фильтрацию и сортировку элементов данных.
(продолжение следует...)
<DataFolderElements Type="Composite.Community.Blog.Entries" DateFormat="yyyy MMMM" FieldGroupingName="Date" Display="Compact">
<Children>
<DataElements Type="Composite.Community.Blog.Entries" Label="${C1:Data:Composite.Community.Blog.Entries:Title}" Display="Auto">
<!-- остальной XML -->
</DataElements>
</Children>
</DataFolderElements>
<Children>
<DataElements Type="Composite.Community.Blog.Entries" Label="${C1:Data:Composite.Community.Blog.Entries:Title}" Display="Auto">
<!-- остальной XML -->
</DataElements>
</Children>
</DataFolderElements>
В нашем примере, он группирует элементы данных типа Composite.Community.Blog.Entries по дате (поле Date).
Соответственно, если этот элемент убрать...
<Element Label="Blog Entries" Id="Root">
<!-- остальной XML -->
<Children>
<DataElements Type="Composite.Community.Blog.Entries" Label="${C1:Data:Composite.Community.Blog.Entries:Title}" Display="Auto">
<!-- остальной XML -->
</DataElements>
</Children>
</Element>
<!-- остальной XML -->
<Children>
<DataElements Type="Composite.Community.Blog.Entries" Label="${C1:Data:Composite.Community.Blog.Entries:Title}" Display="Auto">
<!-- остальной XML -->
</DataElements>
</Children>
</Element>
...то записи блога будут представлены без группировки.
DataFolderElements в иерархии является предком для DataElements и должен указывать на тип данных, который представляет DataElements (в нашем примере - это Composite.Community.Blog.Entries.)
Вот какие атрибуты вы должны или можете указать для DataFolderElements:
Обязательные:
- Type: (“Тип”) Тип данных, элементы которого группируются (такой же какой указан для вложенного DataElements)
- FieldGroupingName: (“Имя группирующего поля”) Имя поля в типе данных, по которому элементы будут группироваться
Необязательные:
- DateFormat: ("Формат даты") Формат даты при группировки по полю, содержащего дату (напр., 'yyyy MMMM'). Используйте такие обозначения:
- Год: y, yy, yyy, yyyy
- Месяц: M, MM, MMM, MMM.
- День: d, dd, ddd, dddd.
- Час: h, H, hh, HH.
- Минуты: m, mm.
- Секунды: s, ss
- Range: ("Диапазон") Диапазон элементов для группировки по буквам/цифрам в названии элемента. Между начальным и конечным значением используйте ">" и "," между несколькими диапазонами (напр., "0>10, 11>20, 21>" or "А>З, И>Я")
- FirstLetterOnly: (“Только первая буква”) При значении "true" элементы группируются по первой букве названия элемента (алфавитная группировка).
- Display: (“Отображение”) Режим отображения элемента группирующей папки в зависимости от наличия дочерних элементов: Lazy, Compact, Auto. (Подробно рассмотрел в предыдущем сообщении.)
- Icon: (“Иконка”) Иконка для элемента группирующей папки.
Следует отметить, что группировать можно не по одному, а по нескольким полям. В таком случае можно вкладывать DataFolderElements друг в друга, вкладывая в последний из них - нужный нам DataElements.
Корневой DataFolderElements настраивается при помощи указанных выше атрибутов, а вот любой дочерний (по отношению к корневому) DataFolderElements имеет свои особенности.
Во-первых, для него не нужно указывать тип данных (атрибут Type) - он задан в корневом DataFolderElements.
Во-вторых, у дочернего DataFolderElements можно указать еще один необязательный атрибут (которого нет у корневого):
- ShowForeignItems: При значении "true" будут показаны все нелокализованные элементы данных и для них будет добавлено контекстное действие “Локализовать” (Это тот случай, когда некоторые элементы данных созданы в другой языковой версии (локали) сайта, а сам тип данных поддерживает локализацию.)
Мы можем, например, сгруппировать записи блога не только по дате, но и, скажем, по ярлыкам (поле Tags):
<DataFolderElements Type="Composite.Community.Blog.Entries" DateFormat="yyyy MMMM" FieldGroupingName="Date" Display="Compact">
<Children>
<DataFolderElements FieldGroupingName="Tags" Display="Compact">
<Children>
<DataElements Type="Composite.Community.Blog.Entries" Label="${C1:Data:Composite.Community.Blog.Entries:Title}" Display="Auto">
<!-- остальной XML -->
</DataElements>
</Children>
</DataFolderElements>
</Children>
</DataFolderElements>
<Children>
<DataFolderElements FieldGroupingName="Tags" Display="Compact">
<Children>
<DataElements Type="Composite.Community.Blog.Entries" Label="${C1:Data:Composite.Community.Blog.Entries:Title}" Display="Auto">
<!-- остальной XML -->
</DataElements>
</Children>
</DataFolderElements>
</Children>
</DataFolderElements>
… чтобы получить вот такую структуру:
Далее мы рассмотрим фильтрацию и сортировку элементов данных.
(продолжение следует...)
Предыдущие сообщения по теме:
- Консольные приложения (1): Введение
- Консольные приложения (2): Определение приложения. Тип подключения
- Консольные приложения (3): Определение приложения. Древовидная структура
- Консольные приложения (4): Динамические поля
- Консольные приложения (5): Представление данных
- Консольные приложения (6): Стандартные действия
- Консольные приложения (7): Ручное подключение
- Консольные приложения (8): Пример древовидной структуры элементов
Комментариев нет:
Отправить комментарий