2012-03-28 127 views
2

我有我的Notes文档几个领域动态数据绑定?

FieldA_1 FieldA_2 FieldA_3 FieldA_4

FieldB_1 FieldB_2 FieldB_3 FieldB_4

在复合控件我有2个编辑框 FIELDA FieldB

我有一个compositeData.ATM_NU M定义了一个自定义控件,它是一个值为1,2,3,4的下拉列表。

如何使用可用的复合数据将我的控件上的编辑框绑定到相应的文档字段?

例如,我想要做类似于: “FieldA _”+ compositeData.ATM_NUM。

我想在这个线程JavaScript解决方案:

Binding an edit box within a custom control to a form field programatically

但它似乎并没有工作。

回答

11

请尝试以下值作为例如字段A:

<xp:inputText value="#{document['FieldA'+compositeData.ATM_NUM]}" /> 

您还可以扩展定制控件的属性包括整个字段名称(和由此转移例如“FieldA_1”到自定义控制)。然后,你应该能够做到以下几点:

<xp:inputText value="#{document[compositeData.fieldName]}" /> 
+3

你可能也想看看这个解释技术Per推荐:http://stackoverflow.com/questions/9719778/xpages-more-fields-unlimited-at-the-click-of-a-button/9720793#9720793 – 2012-03-28 19:16:48

+0

我试过value =“#{document1 [CMBUExistTermID + compositeData.ATM_NUM]}“但是我得到了一个错误。我会尝试野外的事情,但如果可以的话,宁愿避免它。我想知道如何使用我的复合“数字”字段。 – 2012-03-28 19:24:35

+0

也试过value =“#{document1 ['CMBUExistTermID'+'4']}”这样会产生错误尝试将String“CMBUExistTermID”转换为类型“java.lang.Double”但是alue =“#{document1 ['CMBUExistTermID4']}“正常工作。 – 2012-03-28 19:37:48

5

的问题与该的CompositeData准备好您的使用时间。开始时,您的自定义控件准备就绪时,它的计算结果为“0”。

试试这个:

<xp:inputText id="inputText1" 
      value="${javascript:'#{document1.SomeField'+compositeData.SomeParam+'}'}"> 
</xp:inputText> 

它用 “$” 符号也很重要。它将创建一个绑定到SomeField1,SomeField2等依赖于SomeParam。

+0

谢谢Serdar,我试过了,但没有奏效。没有任何错误或任何事情没有按预期填充字段。这是我使用的实际公式。 value =“$ {javascript:'#{document1.CMBUAction'+ compositeData.ATM_NUM +'}'}”>> – 2012-03-29 12:46:21

+0

OK,document1定义在哪里?内部CC还是XPage? – 2012-03-29 13:01:31

+0

我说得太快了。它工作完美。 $的目的是什么?这是否有任何记录? – 2012-03-29 14:07:40

5

用于数据的自定义对照结合的一个例子是这样的:

创建自定义控制,加2个自定义属性:BindTo(字符串),canEdit(布尔值)。通常情况下,您需要根据业务逻辑的状态只读取一个字段,而不是其余部分处于编辑模式。

<xp:listBox id="listBox1" 
     rendered="#{compositeData.canEdit}"> 
     <xp:this.value><![CDATA[${javascript:"#{"+compositeData.BindTo+"}"}]]></xp:this.value> 
     <xp:selectItem itemLabel="red"></xp:selectItem> 
     <xp:selectItem itemLabel="blue"></xp:selectItem> 
     <xp:selectItem itemLabel="green"></xp:selectItem> 
</xp:listBox> 
<xp:text id="textForListbox" 
     rendered="#{!compositeData.canEdit}"> 
     <xp:this.value><![CDATA[${javascript:"#{"+compositeData.BindTo+"}"}]]></xp:this.value> 
</xp:text> 

这种方法(使用${javascript:"#{"+compositeData.BindTo+"}"})的好处是,你可以在控制任何东西绑定:一个文件,一个范围变量,豆等

+0

欢呼声。第一次我看到如何动态绑定到文档以外的其他东西。很有用 – 2014-09-22 18:48:43