2013-03-05 5 views
0

У меня есть вопрос для вас, душистые души. У меня есть форма Infopath для списка Sharepoint (что означает, что это считается формой списка Infopath), что я хотел бы получить определенное поведение ... и я не совсем уверен, как его достичь.Infopath и Cascading Dropdowns

Суть в том, что у меня есть два выпадающих списка в форме, и я хочу, чтобы второе выпадающее меню изменило его значения на основе первого выбора выпадающих списков.

Оба указывающие на один список. Список выглядит так:

ID, ModuleName, SystemName, PayCode, LineOfBusoness 
1, Mod1, Sys1, O, LOB1 
2, Mod2, Sys2, O, LOB2 
3, Mod3, Sys3, C, LOB3 
4, Mod3, Sys4, O, LOB3 

первый выпадающий содержит только paycodes, поэтому в основном «O» и «C».

Теперь второе выпадающее меню - это сложное явление.

Второй снимок предназначен для отображения всех Линий бизнеса (LOB) из этого списка на основе PayCode, выбранного в предыдущем раскрывающемся списке. Если они выбрали «O», тогда просто отобразите все LOB, у которых есть код оплаты «O».

BUT ... если они выбирают «C» ... ну, то есть также выпадающие списки в форме, в которой они уже выбрали Систему и модуль ... поэтому затем будут выбраны те значения, которые были выбраны, и выберите значение в списке, в котором была выбрана Система, выбранный им модуль и выбранный ими код оплаты.

Как я могу это сделать? Моя первая мысль была хорошо, просто используйте код ... но, оказывается, Infopath не позволяет настраивать код в «форме списка», что это ... wtf? Итак, следующий вариант - использовать метод «каскадного выпадающего списка», в котором вы также можете использовать правила и фильтры, чтобы попытаться достичь этого.

Можно ли это сделать? Каковы ваши мысли о том, как вы могли бы решить эту проблему?

Заранее благодарим за внимание, и, пожалуйста, дайте мне знать, если вам нужна дополнительная информация!

ответ

0

Один из способов сделать это в коде.

Сделайте первый снимок, найдите поле, с которым оно связано, щелкните правой кнопкой мыши и создайте событие «Изменено».

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

Сделайте это, взяв исходный список и запустив SPQuery, который выбирает все элементы с «O» или «C» или любым другим выбранным значением. Вы также можете запустить оператор linq или foreach для всех элементов списка, в зависимости от того, что вы предпочитаете :)

Примечание. Убедитесь, что свойства управления выпадающим списком «Всегда» выбраны на вкладке «Форматы браузера» свойств (щелкните правой кнопкой мыши в раскрывающемся списке для доступа к этим свойствам)

Надеюсь, это поможет!

+0

Спасибо Meyer. Это было мое первоначальное намерение, и было бы так легко сделать! Однако это форма списка Sharepoint, а не форма формы библиотеки. Формы списков не позволяют настраивать код (код позади), что и заставляло меня использовать ключ. Для различий между типами форм см. Следующее: http://blogs.msdn.com/b/infopath/archive/2010/04/22/comparing-list-and-form-library-forms.aspx – Ryan