动态数据绑定?

Bru*_*ski 2 xpages

我的Notes文档中有几个字段

FieldA_1 FieldA_2 FieldA_3 FieldA_4

FieldB_1 FieldB_2 FieldB_3 FieldB_4

在复合控件上,我有2个编辑框FieldA FieldB

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

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

例如,我想做类似的事情:"FieldA _"+ compositeData.ATM_NUM.

我在这个帖子中尝试了javascript解决方案:

将自定义控件中的编辑框以编程方式绑定到表单域

但它似乎没有用.

Per*_*ten 11

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

<xp:inputText value="#{document['FieldA'+compositeData.ATM_NUM]}" />
Run Code Online (Sandbox Code Playgroud)

您还可以扩展自定义控件的属性以包括整个字段名称(从而将"FieldA_1"传输到自定义控件).然后你应该能够做到以下几点:

<xp:inputText value="#{document[compositeData.fieldName]}" />
Run Code Online (Sandbox Code Playgroud)

  • 您可能还想查看Per建议的技术解释:http://stackoverflow.com/questions/9719778/xpages-more-fields-unlimited-at-the-click-of-a-button/9720793# 9720793 (3认同)
  • 读/写绑定必须是普通的EL,它具有比SSJS更严格的语法.如果将字段包装在面板中,则可以定义dataContext,将其值设置为要评估字段名称的任何表达式,然后将其var传递给字段绑定中的数据源.或者,您可以将其包装在接受字段名称作为参数的自定义控件中,然后在字段绑定中引用compositeData. (2认同)

Ser*_*mez 5

该问题与compositeData准备好供您使用的时间有关.在开始时,当您的自定义控件准备就绪时,它会评估为"0".

试试这个:

<xp:inputText id="inputText1" 
           value="${javascript:'#{document1.SomeField'+compositeData.SomeParam+'}'}">
</xp:inputText>
Run Code Online (Sandbox Code Playgroud)

在那里使用"$"符号很重要.这将创建一个绑定到SomeField1,SomeField2等等取决于SomeParam.


stw*_*sel 5

自定义控件的数据绑定示例如下:

创建自定义控件,添加2个自定义属性:BindTo(String),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>
Run Code Online (Sandbox Code Playgroud)

这种方法(使用${javascript:"#{"+compositeData.BindTo+"}"})的优点是你可以将该控件绑定到任何东西:文档,范围变量,bean等.