2012-02-23 1 views
2

У меня есть настраиваемый элемент управления с полем, в котором пользователь вводит идентификатор документа (а не идентификатор примечания или UNID, только уникальный номер). Этот источник данных называется document1. Когда они выходят из поля, я выполняю поиск и показываю либо документ с этим идентификатором, либо новый документ в элементе управления диалоговом окне extlib (источник данных bundleDoc). Когда bundleDoc сохраняется, я хочу обновить поле журнала в документе1, чтобы указать, что был добавлен документ пакета.Диалоговое управление не может видеть второй источник данных на XPage

Я могу сохранить bundleDoc и закрыть (скрыть) диалог, но код в моем Сохранить & Закрыть кнопку в диалоговом окне не может «видеть» document1. Я не могу ссылаться на него, используя document1.getItemValueString или getComponent. GetItemValueString возвращает и пустую строку, а getComponent выдает ошибку, потому что возвращаемое значение равно null.

Я бы разместил изображение, чтобы помочь визуально, но у меня пока нет достаточной репутации. :( Что мне не хватает? Не могу ли я получить документ1 из диалогового элемента управления, так как он находится на том же XPage?

UPDATE: Два поля в форме диалога вычислено значения по умолчанию, которые используют getComponent для получить их значения из документа 1. Таким образом, по крайней мере, когда диалог загружен, он может видеть документ 1. Кроме того, bundleDoc не определяется как источник данных для диалогового элемента управления. Я постараюсь, чтобы это было завтра, чтобы узнать, не имеет значения.

UPDATE 2: все еще недостаточно репутации для публикации изображения, но вот какой-то код. Это один настраиваемый элемент управления, который содержит диалоговое управление. Document1 определяется как источник данных для настраиваемого элемента управления, а bundleDoc определяется как данные источник для панели в диалоговом управлении, который таблица полей полей для документа пакета.

Поле BundleID в диалоговом управления имеет вычисленное значение по умолчанию с помощью этого:

if (bundleDoc.isNewNote()) { 
    getComponent("inputBundleID").getValue(); 
} else { 
    bundleDoc.getItemValueString("BundleID"); 
} 

Формула для StorageLocationID аналогична за исключением того, что компонент inputStorageTrayID.

Это код в кнопку Закрыть Сохранить &:

bundleDoc.save(); 
var newArr = new Array(document1.getItemValue("WorkLog")); 
newArr.push("Added bundle " + document1.getItemValueString("BundleID") + " - " + session.getCommonUserName()); 
document1.setValue("WorkLog",newArr); 
document1.save(); 
getComponent("dialog1").hide(); 

ошибка происходит на document1.save линии, но он не получает BundleID от документа1 (я установить переменную sessionScope к значению newArr и он показал «Добавлен пакет - Аноним».

+1

Дон, вы можете добавить часть своего кода в свой вопрос, чтобы сделать более понятным, что вы пытаетесь сделать? Это поможет вам получить ответ –

+0

Спасибо, Пер. Сегодня утром добавлен код. Надеюсь, это подтолкнет мою репутацию достаточно высокой, чтобы опубликовать изображение контроля, если это необходимо. –

ответ

0

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

Однако мне пришлось сделать еще одну вещь, чтобы заставить страницу работать так, как я хотел.Это XPage в конструкторе:

enter image description here

Чтобы записать значение из Сохранить & кнопки Закрыть обратно в поле Журнала событий, я должен был сохранить источник данных Document1 перед открытием диалогового окна. Затем документ1 был распознан в течение всего кода сохранения & и он был сохранен правильно в любое время.

1

Это зависит от того, где вы добавили источники данных. Если document1 задан как источник данных настраиваемого элемента управления 1, а bundleDoc - это источник данных настраиваемого элемента управления 2, доступ к которому невозможен их вне пользовательского контроля, в котором они определены.

Если вы добавляете документ1 в качестве источника данных своего настраиваемого элемента управления и создаете диалоговое управление xe: (содержащее панель с источником данных bunleDoc) в том же настраиваемом элементе управления, вы должны иметь доступ к document1 (и обновлять/сохранять его) из кнопку в диалоговом окне.

+0

Спасибо, Марк. Пожалуйста, ознакомьтесь с дополнениями, которые я сделал в исходном вопросе. В вашем втором абзаце описывается, как я определил источники данных. Я попытаюсь обновить документ1, прежде чем я сохраню источник данных bundleDoc, хотя, если это работает, я должен сказать, что в диалоговом контроле есть ошибка. –

Смежные вопросы