如何过滤dataTable项目?

时间:2017-06-12 15:20:54

标签: jsf datatable bootsfaces

问题

使用Bootfaces创建dataTable时,我可以带上我的数据库中的所有项目,但是我需要带一个字段等于特定数字的项目。我怎么能这样做?

实施例

Evento(Id,nombre,categoria)

  • Id Nombre Categoria
  • 1 aaaa 1
  • 2 bbbb 2
  • 3 cccc 2

dataTable只会带来第一个,Id 1。

代码

<b:dataTable value="#{eventoController.items}" var="item" styleClass="list" scroll-x="true">

    <h:column>
        <f:facet name="header">
            <h:outputText value="#{bundle.ListEventoTitle_idEvento}"/>
        </f:facet>
        <h:outputText value="#{item.idEvento}"/>
    </h:column>

    <h:column>
        <f:facet name="header">
            <h:outputText value="#{bundle.ListEventoTitle_nombre}"/>
        </f:facet>
        <h:outputText value="#{item.nombre}"/>
    </h:column>

    <h:column>
        <f:facet name="header">
            <h:outputText value="#{bundle.ListEventoTitle_idCategoria}"/>
        </f:facet>
        <h:outputText value="#{item.idCategoria}"/>
    </h:column>

</b:dataTable>

1 个答案:

答案 0 :(得分:1)

<h:column>替换为BootsFaces对应<b:dataTableColumn />。现在您可以设置属性search-value。您很可能还需要激活multi-column-search='true's searching='true'。在你的情况下,那是

<b:dataTable value="#{eventoController.items}" 
             var="item" 
             styleClass="list" 
             scroll-x="true"
             multi-column-search="true"
             searching="true">
    <b:dataTableColumn search-value="1" searchable="true">
       <f:facet name="header">
          <h:outputText value="#{bundle.ListEventoTitle_idEvento}"/>
       </f:facet>
       <h:outputText value="#{item.idEvento}"/>
    </b:dataTableColumn>
    ...
</b:dataTable>

请记住,BootsFaces dataTable是一个客户端小部件。这意味着将整个HTML表发送到客户端。反过来,这会在加载数据后进行快速过滤,分页和排序,但如果您有大量数据,那么您也需要在服务器端过滤数据。

另见https://showcase.bootsfaces.net/forms/DataTable.jsf(搜索“初始搜索过滤器”)。