Мне нужно предварительно заполнить поля динамического 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 раскрывающегося списка.