Фильтрация вложенного повтора

В моем приложении есть документы для Компаний и для Клиентов. Это отношение многие ко многим; у компании может быть любое количество клиентов, и клиент может быть клиентом многих компаний. Отношения сохраняются путем создания ответного документа компании с полем, содержащим идентификатор документа клиента.

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

Я пытался выяснить, как передать этот идентификатор элементу управления повторением, вложенному в первый, либо использовать его в качестве фильтра для просмотра всех клиентских документов, либо использовать его в качестве идентификатора документа источника данных напрямую. Это возможно? Если нет, то как мне отображать данные из документа клиента на странице компании?


person Josh Jolly    schedule 25.07.2012    source источник


Ответы (1)


Когда вы указываете элемент управления повторением, вы указываете переменную, содержащую значение экземпляра. Это имя переменной видно всем внутри элемента управления повтором. Таким образом, ваша переменная будет содержать UNID клиентских документов по одному. Например, вы называете это ClientDocID. Вы помещаете панель внутрь этого элемента управления повтором. Эта панель может иметь собственный источник данных DominoDocument. Источник данных может иметь новое, отображаемое или изменяемое действие по умолчанию. Вы выбираете «отображение», для которого требуется предоставить DocumentId. Выберите «вычислено» и просто используйте ClientDocID в качестве формулы.

Вы можете отключить рендеринг HTML для панели (проверьте свойства), чтобы он подходил, например. внутри xp:tr.

надеюсь, это поможет

person stwissel    schedule 26.07.2012
comment
Я попробовал это: <xp:repeat id="repeat4" rows="30" value="#{TACView}" var="linkData" indexVar="linkIndex"> <xp:panel> <xp:this.data> <xp:dominoDocument var="document2" action="openDocument" documentId="#{javascript:linkData.ProID}" formName="PL"> </xp:dominoDocument> </xp:this.data> безуспешно, что я делаю не так? - person Josh Jolly; 26.07.2012
comment
Я могу отобразить идентификатор документа, который я хочу открыть, на панели, и я могу получить доступ к данным в нем, поместив идентификатор в вычисляемое поле с именем test и используя такие вещи, как: database.getDocumentByUNID(getComponent("test").getValue()).getItemValueString("PL_Phone") но это кажется запутанным обходным путем? - person Josh Jolly; 26.07.2012
comment
Linkdata какого типа? Xspviewentry? Затем выберите правильный метод для unid, и вы сможете использовать document2.pl-phone. Пользовательский интерфейс на самом деле должен предлагать вам имена полей. - person stwissel; 27.07.2012
comment
Удалите префикс javascript в привязке documentId и установите для ignoreRequestParams значение true. - person Tim Tripcony; 22.08.2012