有没有办法通过点击里面的文本并使该文本成为过滤器来过滤p:datatable列?p:datatable过滤器:无法验证具有空值的组件
换句话说,如果我点击一个会话ID,我希望数据表能够通过点击的ID来过滤这个列,就像我在上面的过滤器中手动输入它一样?
我使用Primefaces 6
UPDATE
这是我的完整的数据表与建议的解决方案:
<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
解决方案 从复制粘贴碧玉:
在你的问题没有widgetVar数据表设置为 tablealltx,所以PF( 'tablealltx')。filter()会失败。您可以在浏览器的JavaScript控制台中通过输入PF('tablealltx') 来测试它。
有事件
。如果你可以在filter-field中得到点击的文本,我想你可以用PF('datatablewv').filter()结束。我还没有尝试,虽然 –