Каскадные поля в SharePoint 2010

Некоторое время назад у нас возникла задача создать список с каскадными полями, данные для которых надо было бы брать из друогого списка. Стандартный формат стобца Lookup для этого не очень подходил, т.к. в исходном списке должно было быть большое количество элементов, отличающихся одним-двумя значениями.

В интернете удалось найти несколько решений по 600-800 баксов. Но хотелось сделать все самостоятельно. Решить эту задачу получилось с помощью SharePoint Designer 2010 и Infopath Designer 2010.

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

Для этого создадим список Клиеты (со столбцами Название, Город, Адрес) и Заказы (со столбцами Название заказа, Город, Клиент, Адрес).  И перейдем в InfoPath для настройки формы создания нового заказа:

clip_image001

Создадим подключение к данным Data Connection. В правом нижнем углу выбираем Manage Data Connections –> Add.

clip_image002

Указываем Receive Data –> SharePoint List or Library –> Указываем адрес нашего сайта SharePoint –> Выбираем список Клиентов –> Выбираем, какие поля будут доступны в этом подключении: Название, Город, Адрес.

clip_image003

Далее в форме создания нового Заказа добавляем Drop-Down List Box поля City, Client, Address. Откуда брать данные сразу можно не указывать. Вернемся к этому чуть позже. После создания 3 нужных стобцов, переходим к настройке полей формы. Заходим в свойства поля (выбираем правой кнопкой Drop-Down List Box Properties) –> В разделе откуда получать данные выбираем Get Choices from External Data Source –> Указываем созданные в самом начале источник данных –> Указываем значения, которые хотим получать и отображать в этом поле. В качестве Value и Title выбираем одни и те же значения (например, Город и Город или Адрес и Адрес), т.к. иначе некорректно будут работать фильтры.

Настраиваем поле “Клиент”:

clip_image004

Настраиваем поле “Адрес”:

clip_image005

Все, поля созданы и форма работает. Однако обратие внимание, что в каждом поле формы отображаются все значения из соответствующих колонок исходного списка (все организации, все адреса, все города):

clip_image006

Для того, чтобы это исправить возвращаеся обратно в InfoPath и переходим в свойства поля Город. Указываем галочку “Show only entries with unique display names”. Так мы будем отображать только записи с уникальными названиями.

clip_image007

Для того, чтобы настроить связанность между полями переходим в свойства поля Организация (мы хотим, чтобы в этом поле отображались только организации из городов, указанных выше в поле Город) –> В строке Entries нажимаем кнопку Select XPath. И в открывшемся окошке выбираем Filter Data. Теперь настраиваем фильтрацию данных по полю Город:

clip_image008

То же самое делаем для фильтрации офисов Клиента в одном городе (слева выбираем поле Город из списка Заказов, а справа выбираем From List/Library – поле Город из списка Клиентов):

clip_image010

Нажимаем ОК. Сохраняем, публикуем, проверяем работу:

Создание нового элемента с использованием каскадных полей:

clip_image011

Новый элемент был создан:

clip_image012

Вот и все 🙂

Реклама
Запись опубликована в рубрике Sharepoint с метками , , . Добавьте в закладки постоянную ссылку.

4 комментария на «Каскадные поля в SharePoint 2010»

  1. Alex:

    А, если не секрет, можно ли все то же, реализовать — используя только MS SharePoint Designer 2010 и MS SharePoint Foundation 2010??
    Без MS InfoPath.
    И, если можно — не подскажите ли — как??

  2. Peter:

    Очень познавательная статья. Спасибо.
    Помогите с решением такого вопроса. На Вашем примере вопрос можно сформулировать так.
    Нужно предусмотреть возможность из формы, которая открывается при работе со списком «Заказы», дополнять список «Клиенты» (пользователи не имеют доступ к нему).
    Другими словами нужно обеспечить заполнение списка «Клиенты» самими пользователями списка «Заказы». Крайне желательно обойтись конструктором форм, не прибегая к Дизайнеру или визуал студии.
    Заранее спасибо за ответ (или ссылки на него), ибо очень в нем нуждаюсь.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s