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

XPages扩展库数据视图控件确认复选框选择的计数,xpages,xpages-extlib,Xpages,Xpages Extlib,我有一个带有数据视图控件的xpage,它启用了显示复选框和显示标题复选框。我希望在用户单击“提交”按钮时,能够向用户提供所选文档数的确认信息 范例 “确实要提交x个文档吗?” 无论我选择了多少文档,我的确认操作都返回0。我做错了什么 <xp:confirm> <xp:this.message><![CDATA[#{javascript:var dataView1:com.ibm.xsp.extlib.component.data.UIDataView = getCo

我有一个带有数据视图控件的xpage,它启用了显示复选框和显示标题复选框。我希望在用户单击“提交”按钮时,能够向用户提供所选文档数的确认信息

范例 “确实要提交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>

您遇到的直接问题是,确认消息很可能是在第一次呈现按钮时计算的,也就是说,在没有检查任何文档时

尽管如此,除此之外,
getselectedds
方法也很棘手:每次请求后都会清除所选文档,因此请求服务器获取所选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
客户端方法与
简单操作的想法相同,如果用户说没有,则返回值将取消提交。

感谢Jesse抽出时间回答我的问题。这对我有用!试图找出何时使用具有挑战性的内容。