none
Связывание веб-частей XsltListViewWebPart и DataFormWebPart (DataVewWebPart) с участием поля Lookup. RRS feed

  • Вопрос

  • Задача просто решается для двух обычных XsltListViewWebPart списков. Предположим, есть список контрагентов, который должен влиять на список договоров. В списке договоров есть поле Lookup "Заказчик", которое является полем подстановки из списка контрагентов. В браузере интерактивными средствами создается соединение "Получить значение фильтров из" в котором поле поставщика - ID контрагента, а поле потребителя - "Заказчик", поле подстановки. Все работает автоматически.

    Но вот, если я использую DVWP (она же DFWP, как понимаю), которая имеет источник данных типа "AggregateDataSource", который объединяет несколько списков, то интерактивная настройка уже не работает. DVWP я могу создать только в SPD, связи создаю там же, используя ленту. Пробовал связи создавать и в браузере - это уже позволяется. Результат один - агрегированный список пуст.

    Был один обходной вариант, но он мне не очень нравится. В DVWP создавался параметр, например ParamPartnerName, создавалось соединение с веб-частью контрагентов, в котором название контрагента передавалось в этот параметр. И далее, снова в DVWP настраивался фильтр: Заказчик Содержит [ParamPartnerName]. Работает, но понятно, что в общем случае это неверно - возможен лишний отбор.

    Как правильно настроить соединение между веб-частями, если одна из них DVWP и ее поле для связывания - Lookup. Связать по ID конечно.

    15 декабря 2016 г. 9:42

Ответы

  • Решения я нашел весьма простое. Для списков, которые участвуют в объединенном источнике данных в DVWP, я добавил дополнительное Lookup поле для передачи ID элемента-поставщика.

    Данное поле я делаю невидимым при отображении DVWP, но оно доступно при формировании обычной связки по фильтру между веб-частями. Все работает замечательно.

    Все другие варианты решения данного вопроса приветствуются! Если как-то можно обойтись без дополнительного поля, буду рад узнать, как!
    • Помечено в качестве ответа Denis Prokofjev 15 декабря 2016 г. 13:11
    • Изменено Denis Prokofjev 15 декабря 2016 г. 13:12
    15 декабря 2016 г. 13:11