Я пытаюсь создать форму Infopath, которая заполняет поля данными из списка Sharepoint. Я установил раскрывающийся список, значения которого заполняются из источника данных Sharepoint. Эта часть отлично работает. Теперь я хочу, чтобы другие строковые поля автоматически заполнялись, когда пользователь выбирает один из элементов в списке.
Поэтому я установил правило для этого. Я написал формулу XPath, чтобы получить атрибут из списка Sharepoint
xdXDocument:GetDOM("Base Printers")
/dfs:myFields/dfs:dataFields/dfs:Base_Printers/@PNP_String
Проблема в том, что при этом всегда захватывается атрибут (PNP_String) из первого элемента в списке. Я хочу заполнить его соответствующим принтером (Base_Printers) на основе выбора пользователя. Поэтому я должен индексировать в Base_Printers, а затем выбрать PNP_String. Итак, я попробовал это
.../dfs:Base_Printers[2]/@PNP_String
Он будет проиндексирован во 2-й элемент и вернет эту строку PNP, что здорово!
Но мне нужно проиндексировать элемент, который выбрал пользователь, поэтому я попробовал это:
.../dfs:Base_Printers[@Printer=my:basePrinter]/@PNP_String
Где @Printer - это атрибут в списке sharepoint, а my: basePrinter - локальная переменная infopath в раскрывающемся списке. И это ничего не делает для меня. Когда я попробовал буквальное значение:
.../dfs:Base_Printers[@Printer='XYZ']/@PNP_String
Он выбрал правильную строку pnp.
Поэтому мой вопрос: как я могу индексировать этот массив принтеров на основе выбора пользователя?
Спасибо