行选择事件 p:dataTable

6
需要捕获dataTable中基于复选框的行选择的rowSelect事件。 代码如下:
<p:ajax event="rowSelect" listener="#{articleBean.onRowSelect}"
                    oncomplete="articleBean.onSelection" />
<p:ajax event="rowUnselect" listener="#{articleBean.onRowUnselect}"
                    oncomplete="articleBean.onSelection" />
<p:column id="name" headerText="Select" selectionMode="multiple"
                    style="width:18px" />

我无法理解这种行为。当我第一次单击复选框时,“onRowSelect”方法被调用。当我取消选择时,“onRowUnselect”未被调用。而且,“onRowSelect”方法仅对网格调用一次,即,如果我单击任何其他复选框,事件不会触发。我错过了什么吗?无法理解这种行为。


第一次选择后刷新页面,它是否有效? - Matt Handy
@Matt 是的,在刷新后第一次选择有效。 - Shikha Dhawan
我在你的 p:ajax 中没有看到任何更新命令。因此,只有当前元素将被更新。如果可能的话,您可以尝试设置 update="@form" - Matt Handy
1个回答

16

如果您正在使用基于复选框的行选择的数据表,则应将以下内容替换:

<p:ajax event="rowSelect"
<p:ajax event="rowUnselect"

以下是:

<p:ajax event="rowSelectCheckbox"
<p:ajax event="rowUnselectCheckbox"

在dataTable标题中,是否也有“全选”复选框的事件?这些rowSelectCheckboxrowUnselectCheckbox事件在这种情况下不起作用。 - Micer
6
好的,事件是 toggleSelect(当标题复选框被切换时触发)。 - Micer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接