【发布时间】:2016-12-02 14:18:52
【问题描述】:
我有一个p:dataTable 和selectionMode=multiple,它绑定了rowSelect 和rowUnselect 事件:
<p:dataTable
widgetVar="myDatatable"
selectionMode="multiple"
selection="#{myBean.selection}">
<p:ajax event="rowSelect" listener="#{myBean.onSelect}" />
<p:ajax event="rowUnselect" listener="#{myBean.onUnselect}" />
... (columns)
</p:dataTable>
选择行工作正常,myBean.selection 已更新,myBean.onSelect() 已被调用。
现在我想添加按钮以(取消)选择所有项目到我的工具栏。我创建了两个<p:commandLink>s:
<p:commandLink onclick="PF('myDatatable').selectAllRows();"
update="actionbarForm">select all</p:commandLink>
<p:commandLink onclick="PF('myDatatable').unselectAllRows();"
update="actionbarForm">unselect all</p:commandLink>
选择似乎有效,我可以看到所有项目都(未)选择。但是,myBean.selection 和 myBean.onSelect() 都没有更新/调用。我需要做什么才能启用它?
【问题讨论】:
-
我没有真正的想法,但是我应该去调试什么以了解更多信息,但出于好奇,你调试了什么?阿贾克斯来电?网络流量?检查 PrimeFaces 源(js 和 java 文件)。你可以做很多事情
-
我检查了,调用
selectAllRows()时没有 Ajax-Call 或网络流量。我还尝试在调用selectAllRows()之前或之后调用PF('myDatatable').fireRowSelectEvent(),但我无法找出正确的参数。 -
如果您将它与“commandButton”一起使用,例如从页面触发调用(在使用 selectAllRows 函数之后)。例如。就像在'Multiple with Meta and Shift keys'的展示中一样
-
向 commandLink 添加操作不会改变任何内容。示例“Multiple with Meta and Shift keys”仅显示选择的结果,这对我在逐个选择项目时有效。
-
我在展示中尝试了后者,方法是从开发者控制台运行
PF('widget_form_multipleDT').selectAllRows(),然后按下“查看”按钮。然后似乎服务器具有所有行并显示它们。只是没有“rowSelect”事件
标签: ajax primefaces datatable multipleselection