【发布时间】:2016-09-29 14:31:31
【问题描述】:
有没有办法通过单击里面的文本并使该文本成为过滤器来过滤 p:datatable 列?
换句话说,如果我点击一个会话 ID,我希望数据表按点击的 ID 过滤此列,就好像我在上面的过滤器中手动输入的一样?
我正在使用 Primefaces 6
更新
这是我的完整数据表以及建议的解决方案:
<p:dataTable id="tablealltx" var="transaction" value="#{pastTxModel.txList}" paginator="true" rows="20" sortBy="#{transaction.createdDate}" sortOrder="descending" resizableColumns="true">
<p:column filterBy="#{transaction.session}" filterMatchMode="contains">
<f:facet name="filter">
<p:inputText id="myFilter" value="#{transactionXmlController.currentFilter}" onchange="PF('alltxform').filter()" />
</f:facet>
<p:outputLabel value="#{transaction.session}" ondblclick="document.getElementById('alltxform:tablealltx:myFilter').value = this.innerText;PF('tablealltx').filter()" >
</p:column>
</p:dataTable>
当我双击会话时,在过滤器文本框中输入了值,但过滤器本身不起作用。没发生什么事。
我使用的是 TomEE 7.0.1
解决方案 从 Jasper 复制粘贴:
您问题中的数据表没有将 widgetVar 设置为 tablealltx,所以 PF('tablealltx').filter() 会失败。您可以通过以下方式对其进行测试 在浏览器的 JavaScript 控制台中输入 PF('tablealltx')。
【问题讨论】:
-
有事件
。如果您可以在过滤器字段中获得单击的文本,我猜您可以以 PF('datatablewv').filter() 结尾。不过我没试过
标签: primefaces apache-tomee tomee-7