【问题标题】:Primefaces filter datatablePrimefaces 过滤数据表
【发布时间】:2014-03-01 03:09:18
【问题描述】:

大家好,我的数据表有问题,我想对其进行过滤,但如果我在文本字段中输入任何内容,则不会显示任何内容,并且如果我清除输入也不会显示任何内容。 如果我在一列中有多个语句,可能吗?

所以我使用 primefaces 3.5 和 jsf 2.1

这是代码,如果您需要更多代码,请发表评论。谢谢

<p:dataTable id="inboxTable" var="task" value="#{taskboxBean.taskboxInboxList}" paginator="true"
            widgetVar="inboxTable" rows="10" selection="#{taskboxBean.selectedTaskbox}"
            selectionMode="single" rowKey="#{task.ID}" emptyMessage="" paginatorPosition="bottom"
            filteredValue="#{taskboxBean.inboxList}">

            <p:ajax event="rowSelect" update=":contentForm, :postForm:tabViewPosts:inboxTable"
                listener="#{taskboxBean.onTaskboxRowSelect}" />

            <f:facet name="header">  

                <p:outputPanel>
                    <h:outputText value="Suchen:" />
                    <p:inputText id="globalFilter" onkeyup="inboxTable.filter()"
                        style="margin-left:5px;width:150px" />
                </p:outputPanel>
            </f:facet>

            <p:column headerText="Post">
                <h:outputText
                    value="#{task.FROM_USER.FIRST_NAME} #{task.FROM_USER.LAST_NAME} (#{task.FROM_USER.EMAIL})" />
                <div align="right">
                    <h:panelGroup rendered="#{!task.IS_SEEN}" class="fa fa-envelope fa-2x" />
                    <h:panelGroup rendered="#{task.IS_SEEN}" class="fa fa-envelope-o fa-2x" />
                </div>
                <h:outputText value="#{task.TASKTYPE.NAME}" />
                <br />
                <h:outputText value="#{task.CREATE_TIMESTAMP}" />
            </p:column>

        </p:dataTable>

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    文档中没有明确写,但正如PrimeFaces forum 中提到的,您需要在要通过全局过滤器进行搜索的列上声明filterBy 属性。

    如果您不希望过滤器在单个列上可见,这里还建议将filterStyle="display:none" 添加到列中。

    文档中的示例有filterBy:

    <p:dataTable var="car" value="#{carBean.cars}"
            filteredValue="#{carBean.filteredCars}" widgetVar="carsTable">
        <f:facet name="header">
            <p:outputPanel>
                <h:outputText value="Search all fields:" />
                <h:inputText id="globalFilter" onkeyup="carsTable.filter()" />
            </p:outputPanel>
        </f:facet>
            <p:column filterBy="#{car.model}" headerText="Model" filterMatchMode="contains">
                <h:outputText value="#{car.model}" />
            </p:column>
    </p:dataTable>
    

    然而,正如 PrimeFaces 文档的典型特征,没有写到没有filterBy 将无法工作。

    【讨论】:

      【解决方案2】:

      您必须在taskboxBean 类中添加taskboxInboxList 的getter 和setter。但它只过滤列中的第一条语句。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-04
        • 1970-01-01
        • 1970-01-01
        • 2018-01-24
        • 2013-08-01
        • 2018-01-29
        • 2012-11-01
        • 1970-01-01
        相关资源
        最近更新 更多