Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога | Увійти Live ID
в Пошук

Современные системы интеграции

Здась я буду помещать статью отностительно таких продуктов как BizTalk и Sharepoint

Поиск по списку SharePoint

Введение

Достаточно часто встречается задача быстрого нахождения нужного или нужных элементов в списке на узле SharePoint. При этом требуется применять достаточно сложные фильтры, а не просто четкого соответствия введенных данных какой-то колонке списка.

Например, у вас есть список клиентов, который хранится в виде списка на узле SharePoint. Требуется создать решение, в котором пользователи смогут искать/фильтровать клиентов по Фамилии и Организации.

Метод представленный ниже, описан в некоторых англоязычных статьях и поэтому я не претендую на оригинальность и на авторство данного подхода. Однако, в связи с тем, что достаточно часто встречаются данные проблемы у разработчиков, я и о описываю в данной статье.

Суть решения.

Допустим список называется Contacts и у вас установлена англоязычная версия SharePoint.

  1. Создаем страницу для отображения результатов поиска/фильтрации
    1. Создаем aspx страницу, на которой размешена веб-часть, отображающая список контактов
    2. Настраиваем список так, чтобы он получал параметр для фильтрации из URL, например SearchStr.
    3. Настраиваем этот список на фильтрацию таким образом, чтобы показывались только контакты, содержащие в фамилии или названии организации подстроку из SearchStr
  2. Создаем страницу для ввода строки для поиска/фильтрации
    1. Создаем aspx страницу, на которой размешаем веб-часть «Form Web Part»
    2. Изменяем ее настройки, чтобы она содержала поле ввода и фрейм
    3. В данной веб-части Создаем JavaScript, который срабатывал бы на изменение текста в поле ввода и динамически менял адрес страницы во фрейме (как раз адрес страницы для отображения результатов с передачей введенного текста как параметра)

Детальное описание реализации решения.

1. Создание и настройка страницы отображения результатов поиска/фильтрации

    1. Запустите SharePoint Designer 2007 и откройте нужный узел
    2. Создайте aspx страницу с названием Result.aspx (без использования мастре-страницы)
    3. В меню "Data View" выберите пункт "Insert DataView"
    4. Перетащите список Contacts с панели Data Source Library на страницу Result.aspx
    5. Настройте список для отображения нужных вам колонок, например, "Last name", "First Name", "Company". Для этого сделайте следующие действия:

                                                               i.      Нажмите на стрелочку с правой стороны веб-части, после чего появится меню "Common Data View Task"

                                                             ii.      Выберите пункт «Edit Columns…»

                                                            iii.      В появившемся окне выберите нужные поля.

    1. Добавьте новый параметр с названием SearchStr для только что созданной веб-части Contacts.

                                                               i.      Откройте меню "Common Data View Task" и выберите пункт “Parametrs…”

                                                             ii.      Добавьте новый параметр с названием SearchStr

                                                            iii.      Установите свойства данного параметра такими: "Parameter Source" установите в "Query String", а "Query String Variable" — в «SearchStr»

    1. Установите фильтр для данной веб-части.

                                                               i.      Откройте меню "Common Data View Task" и выберите пункт “Filter…”

                                                             ii.      Установите фильтр так, чтобы поле LastName или поле Company содержало SearchStr

                                                            iii.      Можно настроить и более сложные фильтры, выбрав галочку «Add XSLT Filtering» и нажав кнопку «Edit»

    1. При необходимости можно улучшить данную веб-часть, например установив параметры сортировки, оформления, отображения «Данные не найдены» вместо пустого набора, в случае если данные не найдены, и т.д.

2. Создаем страницу для ввода строки для поиска/фильтрации

    1. Создаете или откройте страницу, на которой вы планируете разместить элементы для ввода данных и отображения результатов
    2. Разместите на странице веб-часть "Form web part"
    3. Удалите кнопку «GO» и добавьте теги Break и Inline Frame чуть ниже оставшегося в веб-части поля ввода (теги Break и Inline Frame просто перетаскиваются из панели Toolbox)
    4. Перейдите к коду и внутри тегов оформления только что добавленной веб-части найдите блок «
    5. Bзмените тег , который находится внутри элемента «

    1. Bзмените тег , который находится внутри элемента «


    1. Внутри тега «JavaScript? Таим образом, чтобы но был похож на следующий

     

            var timeout = -1;

            function searchChange(textbox) {

                  var text = textbox.value;

                  if (timeout != -1) clearTimeout(timeout);

                  timeout = setTimeout("commitSearch('" + text + "')", 400);

            }

            function commitSearch(text) {

                  var frame = document.getElementById("contactFrame");

                  frame.src="Results.aspx?SearchStr="+text;

            }

     

     

используйте текстовые поля ниже для поиска контактов по фамилии или по названии компании.

     

     

     

     

]]>

3. Сохраните и протестируйте

Выводы

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

Поиск можно улучшить за счет добавления более сложные фильтры (настройка XSLT фильтров) и существенно изменить отображение данных под потребности конкретной реализации.

Автор:

            Никулин Павел Евгеньевич

            Консультант по информационным технологиям

            учебный центр "Softline Internatioanl", г.Киев

            MCT, MCSD, MCTS (BizTalk Server 2006), MCITP (Database Administrator)

            Email: NikulinPavel@mail.ru

            http://smbs.kiev.ua

Опубліковані Monday, September 29, 2008 2:00 AM від Old Nick

Коментарі

Немає коментарів
Анонімні коментарі деактивовані. Увійдіть або Зареєструйтесь щоб мати доступ до ресурсів Спільноти.