我有一个带有数据视图控件的xpage,它启用了show checkbox和show header复选框。我希望能够在用户点击提交按钮时向用户提供所选文档的确认。
实施例 “你确定要提交x个文件吗?”
无论我选择多少文档,我的确认操作都会返回0。我做错了什么?
<xp:confirm>
<xp:this.message><![CDATA[#{javascript:var dataView1:com.ibm.xsp.extlib.component.data.UIDataView = getComponent("dataView1");
var val = dataView1.getSelectedIds();
var len = val.length;
return "Are you sure you want to submit " + len + " number of documents?";
}]]></xp:this.message>
</xp:confirm>
答案 0 :(得分:1)
您遇到的直接问题是确认消息很可能是在第一次呈现按钮时计算的 - 也就是说,当没有检查文档时。
尽管如此,getSelectedIds
方法很棘手:所选文档在每次请求后都会被清除,因此向服务器请求获取所选ID计数的内容也会产生副作用清除选择。
这里可以做的是用客户端进行检查:
<xp:eventHandler ...>
<!-- other action stuff here -->
<xp:this.script><![CDATA[
var count = dojo.query("tbody input[type='checkbox']:checked", dojo.byId("#{id:yourDataViewId}")).length;
return XSP.confirm("Are you sure you want to submit " + count + " document" + (count == 1 ? "" : "s") + "?");
]]></xp:this.script>
</xp:eventHandler>
其中的Dojo查询将搜索数据视图正文部分内的所有已选中复选框(以排除标题复选框),限制在您要搜索的特定数据视图中。 XSP.confirm
客户端方法与<xp:confirm/>
简单操作的想法相同,如果用户拒绝,则从中返回值将取消提交。