Опубликован 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>
 
Примерно вот так.
 












