Как загрузить XML в наборы данных при загрузке в динамической форме PDF (LiveCycle)? - PullRequest
1 голос
/ 27 июля 2011

Мне нужно предварительно заполнить поля динамического PDF, чтобы мои пользователи могли редактировать его и отправлять обратно.

Я использую тэг Adobe ColdFusion CFPDFFORM, который может загружать данные XML в PDF и создавать новый заполненный PDF.К сожалению, это также очищает тег, он полностью опустошает его!Поэтому все выпадающие списки, связанные с наборами данных, не работают.Это код для привязки одного из них:

<bindItems ref="xfa.datasets.LOVFile.LOV.PreferenceLanguageList.PreferenceLanguage[*]" labelRef="$" valueRef="lic"/>

Поскольку я не могу контролировать, как работает тег CFPDFFORM, я нашел обходной путь.Используя LiveCycle Designer для кодирования, я сохраняю все данные, которые есть в в переменную и загрузите ее в наборы данных в форме :: initialize.

Кажется, что это прекрасно загружает наборы данных, так же, как они были до того, как 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 говорит: « Ссылки между элементами списка и ссылочными данными активны. Любое изменение данных вызывает немедленное обновление элементов списка. "

Любая помощь или указание в правильном направлении очень приветствуется.

ОБНОВЛЕНИЕ:

используя ответ azathoth я могу добавить элемент в раскрывающийся список, используя данные из недавно загруженногонаборы данных (после вызова 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 ]

2 голосов
/ 28 июля 2011

Я делаю то, что вы указываете с помощью этого кода:

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  

Скажите, работает ли он для вас

0 голосов
/ 09 марта 2012

возможно, это то, что вы ищете?

Предварительное заполнение раскрывающихся списков в динамических формах PDF из внутреннего источника данных с использованием LiveCycle ES2.5

http://www.adobe.com/devnet/livecycle/articles/prepopulating-dropdown-lists.html

...