标题中的Primefaces datatable筛选器特定列
在Primefaces datatable中,它可以通过以下代码过滤特定列:标题中的Primefaces datatable筛选器特定列,primefaces,jsf-2,Primefaces,Jsf 2,在Primefaces datatable中,它可以通过以下代码过滤特定列: <p:column filterBy="#{car.id}" headerText="Id" filterMatchMode="contains"> <h:outputText value="#{car.id}" /> </p:column> 上面的代码将在列的标题上生成一个过滤器。我想要的是在datatable的头上创建一个过滤器,而不是列。从中,有一个代码: <
<p:column filterBy="#{car.id}" headerText="Id" filterMatchMode="contains">
<h:outputText value="#{car.id}" />
</p:column>
上面的代码将在列的标题上生成一个过滤器。我想要的是在datatable的头上创建一个过滤器,而不是列。从中,有一个代码:
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Search all fields:" />
<p:inputText id="globalFilter" onkeyup="PF('carsTable').filter()"/>
</p:outputPanel>
</f:facet>
这将在datatable的标题中放置一个过滤器,但它将过滤datatable的所有字段,这是我不想要的,我希望它只过滤特定的列,是否可能?您可以使用一些技巧。首先将
widgetVar
属性添加到p:dataTable
,例如widgetVar=“myTable”
。然后,向您添加一个id
属性p:column
:
<p:column filterBy="#{car.id}"
headerText="Id"
filterMatchMode="contains"
id="clm">
<h:outputText value="#{car.id}" />
</p:column>
这里我假设您的表单具有IDfrm
,数据表具有IDtbl
。它们可能有不同的ID,因此相应地更改代码
如果不希望过滤器在列中可见,可以使用CSS规则将其隐藏:
.ui-datatable .ui-column-filter[id='frm:tbl:clm:filter'] {
display: none;
}
如果您使用的是延迟加载,您也可以签出
.ui-datatable .ui-column-filter[id='frm:tbl:clm:filter'] {
display: none;
}