Опубликован SPListViewFilter 1.2

SPListViewFilter 1.6
SPListViewFilter 1.5
SPListViewFilter 1.2

Вчера я опубликовал очередную версию SPListViewFilter. Предыдущие версии я не описывал, потому сегодня я опишу на что способен SPListViewFilter и как он работает.

SPListViewFilter 1.2

What is SPListViewFilter

SPListViewFilter - это веб-часть, предназначенная для фильтрации и поиска данных в списке/библиотеке документов SharePoint 2010.

SPListViewFilter учитывает типы полей и поддерживает следующие типы полей:

  • Однострочный текст
  • Многострочный текст
  • Выбор
  • Число
  • Дата
  • Денежный
  • Подстановка
  • Да/Нет
  • Пользователь или группа
  • Гиперссылка
  • Управляемый метаданные

И вот типы контролов, отображаемые в интерфейсе:

  • Текстовое поле - содержится ли указанное значение (Contains);
  • Текстовое поле с параметрами - выбор типа фильтрации ("равно", "не равно", "содержит", "начинается с"):
  • Дата:
  • Интервал дат
  • Выпадающий список
  • Выпадающий список со множественным выбором
  • Пользователь или группа;
  • Метаданные
  • Метаданные со множественным выбором;

Соотношение между типом поля и возможными элементами интерфейса:

Как работает SPListViewFilter

SPListViewFilter подключается к веб-части представления списка и модифицирует CAML-запрос, используемый для получения данных, исходя из заданных значений фильтра. При этом уже указанные параметры выбора данных (фильтр, группировка данных) не изменяются.

Настройка SPListViewFilter

Для работы SPListViewFilter надо сделать две вещи: подключить его к веб-части представления списка и настроить используемые поля для фильтрации.

Пример работы

В моем примере при указании вот таких значений фильтра:

Исходный CAML-запрос

  1. <View>
  2.   <ViewFields>
  3.     <!-- FieldRefs -->
  4.   </ViewFields>
  5.   <Query>
  6.     <GroupBy Collapse="TRUE" GroupLimit="30">
  7.       <FieldRef Name="Lookup" />
  8.     </GroupBy>
  9.     <OrderBy>
  10.       <FieldRef Name="Title" />
  11.       <FieldRef Name="Tags" />
  12.     </OrderBy>
  13.     <Where>
  14.       <Neq>
  15.         <FieldRef Name="Choice" />
  16.         <Value Type="Text">PHP</Value>
  17.       </Neq>
  18.     </Where>
  19.   </Query>
  20. </View>

Был изменен SPListViewFilter'ом и в итоге стал вот таким:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <View>
  3.   <ViewFields>
  4.     <!-- FieldRefs -->
  5.   </ViewFields>
  6.   <Query>
  7.     <GroupBy Collapse="TRUE" GroupLimit="30">
  8.       <FieldRef Name="Lookup" />
  9.     </GroupBy>
  10.     <OrderBy>
  11.       <FieldRef Name="Title" />
  12.       <FieldRef Name="Tags" />
  13.     </OrderBy>
  14.     <Where>
  15.       <And>
  16.         <And>
  17.           <And>
  18.             <And>
  19.               <Neq>
  20.                 <FieldRef Name="Choice" />
  21.                 <Value Type="Text">PHP</Value>
  22.               </Neq>
  23.               <Eq>
  24.                 <FieldRef Name="Boolean" LookupId="FALSE" />
  25.                 <Value Type="Boolean">1</Value>
  26.               </Eq>
  27.             </And>
  28.             <And>
  29.               <Eq>
  30.                 <FieldRef Name="Choice" LookupId="FALSE" />
  31.                 <Value Type="Text">SQL Server 2005</Value>
  32.               </Eq>
  33.               <Or>
  34.                 <Or>
  35.                   <Eq>
  36.                     <FieldRef Name="ChoiceMulti" LookupId="FALSE" />
  37.                     <Value Type="Text">ASP VBScript</Value>
  38.                   </Eq>
  39.                   <Eq>
  40.                     <FieldRef Name="ChoiceMulti" LookupId="FALSE" />
  41.                     <Value Type="Text">ASP.NET 1.1</Value>
  42.                   </Eq>
  43.                 </Or>
  44.                 <Eq>
  45.                   <FieldRef Name="ChoiceMulti" LookupId="FALSE" />
  46.                   <Value Type="Text">ASP.NET 3.0</Value>
  47.                 </Eq>
  48.               </Or>
  49.             </And>
  50.           </And>
  51.           <And>
  52.             <And>
  53.               <Geq>
  54.                 <FieldRef Name="Date" LookupId="FALSE" />
  55.                 <Value Type="DateTime">2012-05-09T00:00:00Z</Value>
  56.               </Geq>
  57.               <Leq>
  58.                 <FieldRef Name="Date" LookupId="FALSE" />
  59.                 <Value Type="DateTime">2012-05-24T00:00:00Z</Value>
  60.               </Leq>
  61.             </And>
  62.             <And>
  63.               <Or>
  64.                 <Or>
  65.                   <Eq>
  66.                     <FieldRef Name="MultiTags" LookupId="FALSE" />
  67.                     <Value Type="TaxonomyFieldMultiValue">SharePoint 2003</Value>
  68.                   </Eq>
  69.                   <Eq>
  70.                     <FieldRef Name="MultiTags" LookupId="FALSE" />
  71.                     <Value Type="TaxonomyFieldMultiValue">SharePoint 2010</Value>
  72.                   </Eq>
  73.                 </Or>
  74.                 <Or>
  75.                   <Eq>
  76.                     <FieldRef Name="MultiTags" LookupId="FALSE" />
  77.                     <Value Type="TaxonomyFieldMultiValue">SharePoint 2007</Value>
  78.                   </Eq>
  79.                   <Eq>
  80.                     <FieldRef Name="MultiTags" LookupId="FALSE" />
  81.                     <Value Type="TaxonomyFieldMultiValue">SharePoint Foundation</Value>
  82.                   </Eq>
  83.                 </Or>
  84.               </Or>
  85.               <Eq>
  86.                 <FieldRef Name="Tags" LookupId="FALSE" />
  87.                 <Value Type="TaxonomyField">SharePoint 2003</Value>
  88.               </Eq>
  89.             </And>
  90.           </And>
  91.         </And>
  92.         <And>
  93.           <Eq>
  94.             <FieldRef Name="UserMulti" LookupId="TRUE" />
  95.             <Value Type="User">1</Value>
  96.           </Eq>
  97.           <Eq>
  98.             <FieldRef Name="_UIVersionString" LookupId="FALSE" />
  99.             <Value Type="Text">1.0</Value>
  100.           </Eq>
  101.         </And>
  102.       </And>
  103.     </Where>
  104.   </Query>
  105. </View>

Примерно вот так.

Виталий Жуков

Виталий Жуков

Техлид, Архитектор, Разработчик, Microsoft MVP. Более 20 лет опыта в области системной интеграции и разработки программного обеспечения. Специализируюсь на проектировании и внедрении масштабируемых высокопроизводительных программных решений в различных отраслях.

Смотрите также