2016-01-28 6 views
1

Я смог успешно создавать динамические имена полей и сохранить значения для полого ввода с использованием метода, описанным здесь: http://lpar.ath0.com/2014/04/07/repeated-xpages-input-controls-with-number-indexed-field-names/XPages и вычисленное поле в композиционном управлении

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

<xp:text escape="true" id="computedField1"> 
    <xp:this.value><![CDATA[#{compositeData.dataSource[compositeData.fieldName2]}]]></xp:this.value> 
</xp:text> 

Определение свойства для этого поля выглядит следующим образом:

enter image description here

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

<xc:cc_dynamicAssetItems 
row="#{(rownum lt 10)? '0':''}#{rownum}" 
dataSource="#{document1}" 
fieldName1="replace#{(rownum lt 10)? '0':''}#{rownum}" 
fieldName2="budget#{(rownum lt 10)? '0':''}#{rownum}" > 
</xc:cc_dynamicAssetItems> 

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

var projectNumber = getComponent("ProjectNumber").getValue(); 
if(projectNumber == ""){ 
return "Nothing found"; 
}else{ 
return projectNumber + "A"; 
} 

Буду признателен за руководство.

Спасибо,

Dan

+3

не спрашивай компонент, задать источник данных. Что в вашем случае * document1 *. –

+0

Sven, как я могу присвоить динамическое значение имени вычисленного поля и дать ему вычисленное значение? Из вашего ответа неясно, как я могу это сделать. У вас есть пример? Я скорее визуальный ученик :) –

ответ

1

Вместо того, чтобы установить значение вашего компонента, вы должны установить значение основного источника данных. Это означает, что ваша логика не должна запускаться в вычисленном поле, чем в событии onChange компонента ProjectNumber. Затем вам необходимо обновить, например. document1.budget01 только, что намного быстрее.

В качестве альтернативы, вы можете передать метод привязки * для пользовательского элемента управления, как описано здесь: Pass javascript code to Custom Control

(*: в вашем случае привязки значение)

+0

Спасибо Свен. Я смог понять это с вашей помощью. –

-1

вы пытались Javascript вместо выражения язык

например: FIELDNAME1 = "# {JavaScript: 'заменить' + (ROWNUM> 10 '0': '') + ROWNUM}"