Как загрузить XML в наборы данных при загрузке в динамической форме PDF (LiveCycle)?
Мне нужно предварительно заполнить поля динамического PDF, чтобы мои пользователи могли редактировать его и отправлять обратно.
Я использую тэг Adobe ColdFusion CFPDFFORM, который может загружать данные XML в PDF и создавать новый заполненный PDF. К сожалению, он также очищает тег
<bindItems ref="xfa.datasets.LOVFile.LOV.PreferenceLanguageList.PreferenceLanguage[*]" labelRef="$" valueRef="lic"/>
Поскольку я не контролирую работу тега CFPDFFORM, я нашел обходной путь. Используя LiveCycle Designer для кодирования, я сохраняю все данные, которые есть в
Кажется, что это прекрасно загружает наборы данных, так же, как они были до того, как cfpdform испортил их. После вызова loadXML() я могу прочитать наборы данных и получить идентичные результаты, как в исходном PDF с его тегом наборов данных, полным данных XML.
form1::initialize - (JavaScript, client)
//xfa.host.messageBox("loading xml to datasets");
xfa.datasets.nodes.namedItem("LOVFile").loadXML(LOVFile_var.value,0,1);
Page1.Header.debug.rawValue = xfa.datasets.LOVFile.LOV.PreferenceLanguageList.resolveNode("PreferenceLanguage[2]").value;
Проблема в том, что списки вниз все еще не работают, у них нет элементов для показа. Каким-то образом их привязка к наборам данных не обновляется?
Что-нибудь еще, что я должен сделать после loadXML()? Ссылка LiveCycle для bindItems гласит: "Связи между элементами списка и ссылочными данными активны. Любое изменение данных вызывает немедленное обновление элементов списка".
Любая помощь или указать в правильном направлении очень ценится.
ОБНОВИТЬ:
используя ответ Азатота, я могу добавить элемент в выпадающий список, используя данные из недавно загруженных наборов данных (после вызова loadXml()).
var oEyeColors = xfa.datasets.LOVFile.LOV.resolveNode("EyeColorList");
var numberOfNodes = oEyeColors.nodes.length;
var thisValue = "";
for (var i=0; i < numberOfNodes ; i++){
thisValue = oEyeColors.nodes.item(i).value;
if(thisValue == null){
thisValue = "";
}
xfa.resolveNode("Page1.eyeColorDropDownList").addItem(thisValue.toString());
}
Это работает, но это не решение, которое я ищу. Должен быть способ JavaScript для установки bindItems раскрывающегося списка.
2 ответа
Я делаю то, что вы указываете с этим кодом:
xfa.datasets.loadXML(LOVFile_var.rawValue, false, false);
xfa.datasets.saveXML();
var yourXML = xfa.datasets.resolveNode("yourXMLRootNodeName");
var numberOfNodes = yourXML.nodes.length;
for (var i=0; i < numberOfNodes ; i++)
yourDropDown.addItem(yourXML.nodes.item(i).nodes.item(1).value); // this can change according to what you retrieve in your xml
Скажите, сработало ли это для вас
Возможно это то что ты ищешь?
Предварительное заполнение раскрывающихся списков в динамических формах PDF из внутреннего источника данных с использованием LiveCycle ES2.5
http://www.adobe.com/devnet/livecycle/articles/prepopulating-dropdown-lists.html