在采购订单模块中,我们需要根据采购订单的来源选择方法、竞争类型和总成本提出某些问题。这些问题可能会随着时间的推移以及在数据库的不同实例之间发生变化。
所以我有一个包含问题的视图,这样我就可以动态地将问题添加到我的 XPage 中,而无需更改代码。每个问题的答案将存储在一个字段中。因此,包含问题的文档有一个名为 FieldName 的字段,用于提供将使用的字段名称。不幸的是,我没有运气将这些动态字段绑定到文档。
<xp:this.data>
<xp:dominoView var="competitionQuestionView"
viewName="CompetitionQuestions">
</xp:dominoView>
</xp:this.data>
<xp:repeat id="repeat2" rows="30" var="rowData" style="width:700px"
value="#{competitionQuestionView}">
<xp:label id="label1">
<xp:this.value><![CDATA[#{javascript:rowData.getColumnValue("Question");}]]></xp:this.value>
</xp:label>
<xp:inputText id="inputText1">
<xp:this.rendered><![CDATA[#{javascript:rowData.getColumnValue("FieldType") == "Text Box"; }]]></xp:this.rendered>
<xp:this.value><![CDATA[#{javascript:poDoc[rowData.getColumnValue ("FieldName")];}]]></xp:this.value>
</xp:inputText>
</xp:repeat>
我尝试了各种方法来做到这一点,包括制作一个 dynamicInputText 自定义控件来传递字段名称,但没有运气。我得到的最接近的是当我使用这个时:
<xp:this.value>
<![CDATA[#{javascript:tmp = rowData.getColumnValue ("FieldName");'#{poDoc.'+tmp+'}';}]]>
</xp:this.value>
这给了我类似#{poDoc.justification}的东西,这是我想传递给“绑定”的东西,但它最终显示为文本值。
我确实尝试使用 $ 来计算加载值,但我猜测它不起作用,因为我的(和 rowData)视图在加载时不可用。当我想使用部分刷新时,这最终会出现问题,因为我无论如何都想显示哪些字段的标准有所更新。
其他问题的一些答案看起来很有希望,但没有提供代码,所以我无法弄清楚。