我们有许多表格,是维护技术人员要执行的任务清单,例如每年的机动车检查。每个任务都有一个单选按钮,供技术人员确认任务是否完成(例如完成/未完成,或OK/Not OK等),它们都在同一部分形式。
我们希望调用 Action 的按钮将部分中的所有这些单选按钮默认为 OK 或 Done 以加快流程..
我尝试了以下代码,但它设置了所有 Done 值,然后第二条语句清除了 Done 值并设置了 OK 值。我们怎样才能让它同时做到这两点?
<xf:action event="DOMActivate">
<xf:setvalue xxf:iterate="//SubScn2YearlyMaintenance//*[empty(*)]" value="if (//* != '') then 'Done' else ."/>
<xf:setvalue xxf:iterate="//SubScn2YearlyMaintenance//*[empty(*)]" value="if (//* != '') then 'OK' else ."/>
</xf:action>
我们知道我们可以单独设置每个字段,但是可以执行超过 50 个任务,如果可能的话,我们希望一些简单的代码来设置所有完成/确定值。
例子形式
非常感谢。
皮特A
根据您的示例,我建议对每个单选按钮使用相同的值。您只能在标签上有所不同。那么你只能使用一个
xf:setvalue
.
第二种解决方案是在所有单选按钮的名称中使用相同的前缀/后缀,并在您的 XPath 函数中使用
starts-with()
或 ends-with()
。
当重命名带有前缀“OK”的 OK/Not Ok 单选按钮时,结果可能如下所示:
<xf:setvalue xxf:iterate="//SubScn2YearlyMaintenance//*[starts-with(name(),'OK') and empty(*)]"
这些方面的东西对你有用吗?
<xf:action event="DOMActivate">
<xf:setvalue
xxf:iterate="
//SubScn2YearlyMaintenance
//*[
empty() and
exists(
xxf:itemset(concat(local-name(), '-control'), 'xml')
//item/value[. = ('checked')]
)
]"
value="if (// != '') then 'checked' else ."/>
</xf:action>
PS:这个答案已经根据 OP 的反馈进行了更新。