XPages扩展库数据视图控件确认复选框选择的计数

时间:2015-09-16 16:21:32

标签: xpages xpages-extlib

我有一个带有数据视图控件的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>

1 个答案:

答案 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/>简单操作的想法相同,如果用户拒绝,则从中返回值将取消提交。