PF过滤包含日期的数据表列 [英] PF Filtering a Datatable column which contains a date

查看:15
本文介绍了PF过滤包含日期的数据表列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在数据表中有一个列,我想使用以下代码添加过滤器:

<p:dataTable id="aDataTable" var="aVariable" value="#{aView.values}" paginator="true" rows="10" selectionMode="single" selection="#{aView.selection}" onRowSelectUpdate="aForm"><f:facet name="header">一个列表</f:facet><p:column sortBy="#{aVariable.id}" filterBy="#{aVariable.id}" filterEvent="change"><f:facet name="header"><h:outputText value="No"/></f:facet><h:outputText value="#{aVariable.id}"/></p:列><p:column sortBy="#{aVariable.date}" filterBy="#{aVariable.date}" filterEvent="change"><f:facet name="header"><h:outputText value="日期"/></f:facet></p:dataTable>

以这种格式输入日期:

<p:calendar pattern="dd/MM/yyyy" value="#{aView.value.date}"/>

过滤器适用于 id 但不适用于日期.这是什么原因,在这种情况下我如何使过滤器工作?

解决方案

primefaces 中还没有现成的日期过滤机制,但可以使用自定义过滤器按日期过滤.您必须为您的列定义标题方面并使用 ajax 调用进行手动"过滤,但它确实有效:

<f:facet name="header">DateRange<div><p:calendar id="from" value="#{bean.from}" styleClass="calendarFilter"><p:ajax event="dateSelect" listener="#{ctrlr.filterDates()}" update="dataTableId"/></p:日历><p:calendar id="to" value="#{bean.to}" styleClass="calendarFilter"><p:ajax event="dateSelect" listener="#{ctrlr.filterDates()}" update="dataTableId"/></p:日历>

</f:facet>

...

I have a column in a datatable and I want to add a filter with this code:

<p:dataTable id="aDataTable" var="aVariable" value="#{aView.values}" paginator="true" rows="10" selectionMode="single" selection="#{aView.selection}" onRowSelectUpdate="aForm">
                 <f:facet name="header">
                     A List
                 </f:facet>
              <p:column sortBy="#{aVariable.id}" filterBy="#{aVariable.id}" filterEvent="change">
                  <f:facet name="header">
                      <h:outputText value="No"/>
                  </f:facet>
                   <h:outputText value="#{aVariable.id}"/>
              </p:column>
              <p:column sortBy="#{aVariable.date}" filterBy="#{aVariable.date}" filterEvent="change">
                  <f:facet name="header">
                      <h:outputText value="Date"/>
                  </f:facet>
</p:dataTable>

date is inputted in a form in this format:

<h:outputText value="Date: *"/>
<p:calendar pattern="dd/MM/yyyy" value="#{aView.value.date}"/>

Filter is working for id but not for date. What is the reason for this and how can I make filter work in this case?

解决方案

There is no ready-made date filter mechanism in primefaces yet, but there is a possibility to filter by date using a custom filter. You will have to define a header facet for your column and use ajax calls for "manual" filtering, but it does work:

<column>
  <f:facet name="header">DateRange
    <div>
      <p:calendar id="from" value="#{bean.from}" styleClass="calendarFilter">
        <p:ajax event="dateSelect" listener="#{ctrlr.filterDates()}" update="dataTableId"/>
      </p:calendar>
      <p:calendar id="to" value="#{bean.to}" styleClass="calendarFilter">
        <p:ajax event="dateSelect" listener="#{ctrlr.filterDates()}" update="dataTableId"/>
      </p:calendar>
    </div>
  </f:facet>

...

这篇关于PF过滤包含日期的数据表列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆