如何通过整数范围过滤数据表?

问题描述 投票:0回答:1

我在JSF页面中有一个dataTable,其中列出了所有对象。通常,我使用filterBy和filterMatchMode来执行这种类型的操作,但是在这种情况下,我必须过滤给定列的列表,以获得值的范围。我该如何实现?

<p:column headerText="Numero bolla"
                                sortBy="#{productionOrder.orderNumber}"
                                filterFunction="#{productionOrdersView.filter()}"
                                filterOptions="contains">
                                <f:facet name="filter">
                                    <h:inputHidden id="filter" />
                                </f:facet>
                                <f:facet name="header">
                                    <h:outputText value="Numero bolla" />
                                    <h:outputText value="Dalla" />
                                    <p:inputText id="from"
                                        value="#{productionOrdersView.orderNumberStartFilter}">
                                        <p:ajax event="keyup" />
                                    </p:inputText>
                                    <h:outputText value="alla" />
                                    <p:inputText id="to"
                                        value="#{productionOrdersView.orderNumberEndFilter}">
                                        <p:ajax event="change"
                                            listener="#{productionOrdersView.filter()}" update="dtOrders"
                                            oncomplete="PF('dtOrders').filter()" />
                                    </p:inputText>
                                </f:facet>
                                <h:outputText value="#{productionOrder.orderNumber}" />
                            </p:column>

和bean方法:

public void filter() {
    System.out.println("Filtering...");
    System.out.println(orderNumberStartFilter+" "+orderNumberEndFilter);
    if(orderNumberStartFilter!=null && orderNumberEndFilter!=null) {
        this.filtered = productionOrderController.findFromToOrderNumber(Integer.valueOf(orderNumberStartFilter), Integer.valueOf(orderNumberEndFilter));
    }else {
        if(orderNumberStartFilter!=null) {
            this.filtered = productionOrderController.findFromToOrderNumber(Integer.valueOf(orderNumberStartFilter), Integer.valueOf(orderNumberStartFilter));
            return;
        }
        if(orderNumberEndFilter!=null) {
            this.filtered = productionOrderController.findFromToOrderNumber(Integer.valueOf(orderNumberEndFilter), Integer.valueOf(orderNumberEndFilter));
            return;
        }
        this.filtered = orders;
    }
    System.out.println(filtered.size());
}

如何过滤列表?这是执行此操作的好方法吗?我也希望,如果仅插入一个值,则过滤器操作将等于(如此精确地排序)。我已经在网上搜索过,并且看到了很多有关日期的示例,但没有看到整数值的示例。

jsf primefaces
1个回答
0
投票

使您的代码如此

xhtml

 <p:column headerText="Order number" sortBy="#{productionOrder.orderNumber}"
      filterFunction="#{productionOrdersView.filter()}"
      filterMatchMode="contains">
          <f:facet name="filter">
               <h:inputHidden id="filter"/>
          </f:facet>
          <f:facet name="header">
      <p:inputText id="from" value="#{productionOrdersView.from}">
          <p:ajax event="keyup" />
      </p:inputText>
      <h:outputText class="fa fa-arrows-h fa-2x" style="vertical-align: middle;"/>
     <p:inputText id="to" value="#{productionOrdersView.to}">
          <p:ajax event="change"  
               listener="#{productionOrdersView.filter()}" update="your_dataTable_Id" 
               oncomplete="PF('your_dataTable_Id').filter()"/>
      </p:inputText>
           </f:facet>
      <h:outputText value="#{productionOrdersView.orderNumber}" />
  </p:column>

在bean中,使用getter和setter并使用make o方法过滤2个Integer变量from to来过滤数据

 private Integer from;
 private Integer to;
 ..............

 //Method that filter the data
 public void filter(){
   //Filter your data between from - to 
 .......................
    }
}

您可以改进此代码,但我认为这是一个很好的基础。

© www.soinside.com 2019 - 2024. All rights reserved.