Опубликован SPListViewFilter 1.2
SPListViewFilter 1.6
SPListViewFilter 1.5
SPListViewFilter 1.2
Вчера я опубликовал очередную версию SPListViewFilter. Предыдущие версии я не описывал, потому сегодня я опишу на что способен SPListViewFilter и как он работает.
What is SPListViewFilter
SPListViewFilter - это веб-часть, предназначенная для фильтрации и поиска данных в списке/библиотеке документов SharePoint 2010.
SPListViewFilter учитывает типы полей и поддерживает следующие типы полей:
- Однострочный текст
- Многострочный текст
- Выбор
- Число
- Дата
- Денежный
- Подстановка
- Да/Нет
- Пользователь или группа
- Гиперссылка
- Управляемый метаданные
И вот типы контролов, отображаемые в интерфейсе:
- Текстовое поле - содержится ли указанное значение (Contains);
- Текстовое поле с параметрами - выбор типа фильтрации ("равно", "не равно", "содержит", "начинается с"):
- Дата:
- Интервал дат
- Выпадающий список
- Выпадающий список со множественным выбором
- Пользователь или группа;
- Метаданные
- Метаданные со множественным выбором;
Соотношение между типом поля и возможными элементами интерфейса:
Как работает SPListViewFilter
SPListViewFilter подключается к веб-части представления списка и модифицирует CAML-запрос, используемый для получения данных, исходя из заданных значений фильтра. При этом уже указанные параметры выбора данных (фильтр, группировка данных) не изменяются.
Настройка SPListViewFilter
Для работы SPListViewFilter надо сделать две вещи: подключить его к веб-части представления списка и настроить используемые поля для фильтрации.
Пример работы
В моем примере при указании вот таких значений фильтра:
Исходный CAML-запрос
- <View>
- <ViewFields>
- <!-- FieldRefs -->
- </ViewFields>
- <Query>
- <GroupBy Collapse="TRUE" GroupLimit="30">
- <FieldRef Name="Lookup" />
- </GroupBy>
- <OrderBy>
- <FieldRef Name="Title" />
- <FieldRef Name="Tags" />
- </OrderBy>
- <Where>
- <Neq>
- <FieldRef Name="Choice" />
- <Value Type="Text">PHP</Value>
- </Neq>
- </Where>
- </Query>
- </View>
Был изменен SPListViewFilter'ом и в итоге стал вот таким:
- <?xml version="1.0" encoding="utf-8"?>
- <View>
- <ViewFields>
- <!-- FieldRefs -->
- </ViewFields>
- <Query>
- <GroupBy Collapse="TRUE" GroupLimit="30">
- <FieldRef Name="Lookup" />
- </GroupBy>
- <OrderBy>
- <FieldRef Name="Title" />
- <FieldRef Name="Tags" />
- </OrderBy>
- <Where>
- <And>
- <And>
- <And>
- <And>
- <Neq>
- <FieldRef Name="Choice" />
- <Value Type="Text">PHP</Value>
- </Neq>
- <Eq>
- <FieldRef Name="Boolean" LookupId="FALSE" />
- <Value Type="Boolean">1</Value>
- </Eq>
- </And>
- <And>
- <Eq>
- <FieldRef Name="Choice" LookupId="FALSE" />
- <Value Type="Text">SQL Server 2005</Value>
- </Eq>
- <Or>
- <Or>
- <Eq>
- <FieldRef Name="ChoiceMulti" LookupId="FALSE" />
- <Value Type="Text">ASP VBScript</Value>
- </Eq>
- <Eq>
- <FieldRef Name="ChoiceMulti" LookupId="FALSE" />
- <Value Type="Text">ASP.NET 1.1</Value>
- </Eq>
- </Or>
- <Eq>
- <FieldRef Name="ChoiceMulti" LookupId="FALSE" />
- <Value Type="Text">ASP.NET 3.0</Value>
- </Eq>
- </Or>
- </And>
- </And>
- <And>
- <And>
- <Geq>
- <FieldRef Name="Date" LookupId="FALSE" />
- <Value Type="DateTime">2012-05-09T00:00:00Z</Value>
- </Geq>
- <Leq>
- <FieldRef Name="Date" LookupId="FALSE" />
- <Value Type="DateTime">2012-05-24T00:00:00Z</Value>
- </Leq>
- </And>
- <And>
- <Or>
- <Or>
- <Eq>
- <FieldRef Name="MultiTags" LookupId="FALSE" />
- <Value Type="TaxonomyFieldMultiValue">SharePoint 2003</Value>
- </Eq>
- <Eq>
- <FieldRef Name="MultiTags" LookupId="FALSE" />
- <Value Type="TaxonomyFieldMultiValue">SharePoint 2010</Value>
- </Eq>
- </Or>
- <Or>
- <Eq>
- <FieldRef Name="MultiTags" LookupId="FALSE" />
- <Value Type="TaxonomyFieldMultiValue">SharePoint 2007</Value>
- </Eq>
- <Eq>
- <FieldRef Name="MultiTags" LookupId="FALSE" />
- <Value Type="TaxonomyFieldMultiValue">SharePoint Foundation</Value>
- </Eq>
- </Or>
- </Or>
- <Eq>
- <FieldRef Name="Tags" LookupId="FALSE" />
- <Value Type="TaxonomyField">SharePoint 2003</Value>
- </Eq>
- </And>
- </And>
- </And>
- <And>
- <Eq>
- <FieldRef Name="UserMulti" LookupId="TRUE" />
- <Value Type="User">1</Value>
- </Eq>
- <Eq>
- <FieldRef Name="_UIVersionString" LookupId="FALSE" />
- <Value Type="Text">1.0</Value>
- </Eq>
- </And>
- </And>
- </Where>
- </Query>
- </View>
Примерно вот так.