问题很短。我创建了一个 p:datatable
但在 p:column
中我实际上有一个 div
元素。不幸的是,数据表应该有可选择的行,而 div 不会合作;)。
所以解决办法是手动调用,div元素上有onclick监听器,但是datatable的rowSelection应该怎么调用呢?是否有一些 Primefaces 元素的功能列表?
代码:
<p:dataTable var="user" value="#{rec.friends}" rowKey="#{user.id}" widgetVar="friendscrollist"
rendered="#{not empty rec.friends}" scrollable="true" rowIndexVar="findex"
scrollHeight="500" scrollWidth="220" selectionMode="single" selection="#{rec.chosenFriend}" styleClass="friendscroll">
<p:column width="198" id="friend#{findex}">
<div class="friendlist" onclick="friendscrollist.clickRow(#{findex})" />
</p:column>
<p:ajax update=":leftform" event="rowSelect" />
<p:ajax update=":leftform" event="rowUnselect" />
</p:dataTable>
当然这是一个简化版本,只有你需要的东西。所以问题是在 div onclick?
最佳答案
<p:dataTable widgetVar>
有unselectAllRows()
和 selectRow(index)
正是您所需要的功能。
<div onclick="friendscrollist.unselectAllRows(); friendscrollist.selectRow(#{findex})">
不幸的是,这些功能没有可用的文档,但在 Chrome/Firebug 中,当您输入 friendscrollist.
时,您可以在自动完成列表中看到所有可用功能的列表。在 JS 控制台中。下面是来自 Chrome 的屏幕:
根据函数名查看 JS 源代码或常识应该可以告诉/提示您这些函数的作用。
更新:我的观点是正确的,其中一些函数实际上记录在 PrimeFaces 3.4 User's Guide 中.它们位于第 146 页第 3.26 章“数据表”的“客户端 API”部分。
关于javascript - 在 primefaces 数据表上使用监听器执行行单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14294968/