2012-06-01 17 views
6

मैं एक datatable में एक स्तंभ है और मैं इस कोड के साथ एक फिल्टर जोड़ना चाहते हैं शामिल हैं:पीएफ छनन एक DataTable स्तंभ जो एक तारीख

<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> 

तारीख इस प्रारूप में एक के रूप में इनपुट किया जाता है:

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

फ़िल्टर आईडी के लिए काम कर रहा है लेकिन तारीख के लिए नहीं है। इसके लिए क्या कारण है और मैं इस मामले में फ़िल्टर कैसे कर सकता हूं?

उत्तर

11

अभी तक प्राइमफ़ेस में कोई तैयार तिथि फ़िल्टर तंत्र नहीं है, लेकिन कस्टम फ़िल्टर का उपयोग करके तिथि तक फ़िल्टर करने की संभावना है। आप के लिए "मैन्युअल" छानने अपने कॉलम और उपयोग ajax कॉल के लिए एक हैडर पहलू को परिभाषित करना होगा, लेकिन यह काम करता है: सरल समाधान के लिए

<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> 

...

+0

स्पष्टीकरण के लिए धन्यवाद कोस्टजा। – lamostreta

+0

आपका स्वागत है। – kostja

+0

ctrlr.filterDates() – WiXXeY

7

तुम सिर्फ एक प्लेसहोल्डर जोड़ने की जरूरत फ़िल्टर के लिए डेटा प्रकार के रूप में स्ट्रिंग के साथ एक तिथि के लिए घटक उपयोग के द्वारा।

कदम:

मॉडल कक्षा में एक नया क्षणिक प्रॉपर्टी बनानी होगी।

@Transient 
private String dateForFilter; 
public String getDateForFilter() { 
return dateForFilter; 
} 
public void setDateForFilter(String dateForFilter) { 
this.dateForFilter = dateForFilter; 
} 

डेटा मॉडल लौटने से पहले नीचे तर्क बनाएं।

public List<Item> getDataModel() { 
    List<Item> lstItem = serviceClass.loadItem(userid); 
    for (Item item : lstItem) { 
     DateFormat dateFormat = null; 
     Date date = item.getDate; 
     dateFormat = new SimpleDateFormat("MM/dd/yyyy kk:mm"); 
     item.setDateForFilter(dateFormat.format(date)); 
    } 

    return lstItem; 
} 

अद्यतन आपके XHTML dateForFilter संपत्ति का उपयोग करें।

<p:column filterBy="#{item.dateForFilter}"> 
    <f:facet name="header"> 
    Transaction Date 
    </f:facet> 
    <h:outputText value="#{item.dateForFilter}" /> 
</p:column> 

नोट: यदि आप मॉडल वर्ग की सामग्री को अद्यतन करने की तारीख उपयोग नहीं कर रहे आप केवल इस का उपयोग कर सकते हैं।

एचटीएच।

+0

उत्तर के लिए धन्यवाद दे सकते हैं। मैं कोशिश करूँगा। – lamostreta

संबंधित मुद्दे