XPages CSJS复合数据字段
我的表单中有一个repeat控件和一个复合控件来处理绑定到数据源的字段。例如:XPages CSJS复合数据字段,xpages,composite,client-side-validation,Xpages,Composite,Client Side Validation,我的表单中有一个repeat控件和一个复合控件来处理绑定到数据源的字段。例如: <xp:comboBox id="replace" styleClass="form-control" value="#{compositeData.dataSource[compositeData.fieldName1]}"> <xp:selectItem itemLabel="Select a Code"
<xp:comboBox id="replace"
styleClass="form-control"
value="#{compositeData.dataSource[compositeData.fieldName1]}">
<xp:selectItem itemLabel="Select a Code"
itemValue="Select a Code">
</xp:selectItem>
<xp:selectItems>
<xp:this.value><![CDATA[#{javascript:var db = sessionScope.serverPath + "!!" + sessionScope.dbName;
var companyCode = @Trim(@Unique(@DbLookup(db,"vwTblCompany", company,2)));
return @Trim(@Unique(@DbLookup(db,"vwTables","Replacement",3)));
}]]></xp:this.value>
</xp:selectItems>
</xp:comboBox>
我研究了Brad在重复控件内生成动态组件id的示例,但当我使用该方法时,我在重复控件内添加行的能力中断
有人能帮我举个例子吗?跟着蒂姆:去找数据源。按ID获取元素不能做到这一点。您可以考虑以下两种方法:
- 在服务器端验证数据源,并使用错误控件显示结果。这遵循了这样的思想:验证验证数据,而不是UI交互
- 删除repeat控件,并使用ExtLib Rest控件使数据可用。在CSJS中实现完整的UI逻辑,包括呈现单个行
Return 'var x = {"'+getId('replace01')+'","'+getId('anotherfield')+'"};
mastervalid.push(x);'
(用提供渲染id的SSJS函数替换getId)。Mastervalid将是在重复之外的CSJS中定义的数组。最终得到一个数组,该数组在JS对象中包含所有客户端Id字段。将其输入到验证函数中跟踪Tim:跟踪数据源。按ID获取元素不能做到这一点。您可以考虑以下两种方法:
- 在服务器端验证数据源,并使用错误控件显示结果。这遵循了这样的思想:验证验证数据,而不是UI交互
- 删除repeat控件,并使用ExtLib Rest控件使数据可用。在CSJS中实现完整的UI逻辑,包括呈现单个行
Return 'var x = {"'+getId('replace01')+'","'+getId('anotherfield')+'"};
mastervalid.push(x);'
(用提供渲染id的SSJS函数替换getId)。Mastervalid将是在重复之外的CSJS中定义的数组。最终得到一个数组,该数组在JS对象中包含所有客户端Id字段。将其输入到您的验证功能中非常感谢STW、Brad Balassaitis和Keith Strickland的帮助,他们帮助我思考这一点,并为我提供了各种选择 最后,我使用dojo.query获取repeat控件中动态生成的客户机ID的句柄,然后使用foreach验证每个节点
//validate Replacement Code
dojo.query('[id$="replace"]').forEach(function(node, index) {
//alert(index + ': ' + node.value);
if(node.value == "Select a Code"){
dojo.style(node, {
border: 'red solid 1px'
});
}
});
非常感谢STW、Brad Balassaitis和Keith Strickland的帮助,他们帮助我思考这个问题,并为我提供了各种选择 最后,我使用dojo.query获取repeat控件中动态生成的客户机ID的句柄,然后使用foreach验证每个节点
//validate Replacement Code
dojo.query('[id$="replace"]').forEach(function(node, index) {
//alert(index + ': ' + node.value);
if(node.value == "Select a Code"){
dojo.style(node, {
border: 'red solid 1px'
});
}
});
谢谢你,斯蒂芬。我将使用Tim的方法进行服务器端验证。最后,我使用dojo.query获取动态生成的ID,并循环使用它们来验证客户端和设置样式。请随意接受和/或向上投票-我们在这里获得分数;-)谢谢你,斯蒂芬。我将使用Tim的方法进行服务器端验证。最后,我使用dojo.query获取动态生成的ID,并循环使用它们来验证客户端和设置样式。请随意接受和/或向上投票-我们在这里获得分数;-)