2013-03-04 9 views
10

के साथ डेटाटेबल मैं प्राइमफेस डेटाटेबल पर बहुआयामी को कार्यान्वित करने की कोशिश कर रहा हूं। हम प्राइमफेसेस v3.5 का उपयोग कर रहे हैं। मैंने LazyLoadClass में एक नई लोड विधि बनाई है जो SortMeta> पैरामीटर की सूची लेता है।प्राइमफेस के लिए प्रारंभिक सॉर्टऑर्डर मल्टीसोर्ट

लेकिन मुझे तालिका के आरंभिक लोड में समस्याएं हैं। सॉर्टमेटा की सूची> लोड विधि कहलाती है जब शून्य है। मैंने डेटाटेबल के लिए प्रारंभिक सॉर्ट बाई और सॉर्टऑर्डर निर्दिष्ट किए बिना भी कोशिश की है। दोनों मामलों में परिणाम वही है।

यह देखते हुए कि हमारे पास मल्टीसार्ट का समर्थन करने के लिए इस नए वर्ग सॉर्टमेटा है, मुझे संदेह है कि प्रारंभिक क्रम फ़ील्ड और ऑर्डर निर्दिष्ट करने का तरीका भी बदल जाएगा। लेकिन अंतर को इंगित करने के लिए मुझे कहीं भी कोई उदाहरण नहीं मिला। मैनुअल 3.5 में कोई फर्क नहीं पड़ता है।

हम क्यों सॉर्टमेटा की सूची प्राप्त कर सकते हैं> शून्य के रूप में? उदाहरण कोड पर कोई पॉइंटर्स जहां मल्टीसार्ट का प्रयोग Lazyload के साथ किया जाता है?

+0

आपको सॉर्टमेटा की एक सूची प्रदान करने की आवश्यकता है। –

+0

ठीक है। इससे पहले हम कॉलम के नाम की स्ट्रिंग दे रहे थे, लेकिन अब, जैसा कि मैं समझता हूं, हमने इसे बीन पर एक सूची ऑब्जेक्ट से बांध दिया है। धन्यवाद! यह कोशिश करेंगे। –

+0

@CagatayCivici मैंने कोशिश की ' और मेरे पास है preSortOrder को 'निजी शून्य बिल्डस्टोर्ट ऑर्डर() { सॉर्टमैटा sm1 = new SortMeta() के रूप में बनाया गया है; \t \t sm1.setSortField ("resolvedDateTime"); m1.setSortOrder (SortOrder.DESCENDING); preSortOrder.add (SM1); \t \t \t } 'लेकिन एक एनपीई BCS DataTableRenderer में विधि encodeColumnHeader के रूप में' sortIcon = resolveDefaultSortIcon (columnSortByVe, meta.getColumn()। GetValueExpression ("sortBy"), meta.getSortOrder() UIColumn तक पहुँच रहा है फेंक दिया है। नाम()); ' –

उत्तर

18

मैं इसे काम करने में सक्षम था।

अनिवार्य रूप से हमें इसे काम करने के लिए सॉर्टमेटा ऑब्जेक्ट में UIColumn प्रदान करने की आवश्यकता है। समय प्रस्तुत करने के प्रारंभिक क्रम के लिए, मुझे अपने बीन में घटक ढूंढना था और सॉर्टमैटा को असाइन करना था।

नीचे दृश्य एक्सएचटीएमएल

 <p:dataTable id="transDataTable" var="trans" 
     value="#{myBean.transModel}" paginator="true" rows="50" 
     paginatorAlwaysVisible="false" lazy="true" 
     sortMode="multiple" sortBy="#{myBean.preSortOrder}" 
     resizableColumns="true"> 

     <p:column headerText="User" sortBy="#{trans.user.name}" > 
      #{trans.user.name} 
     </p:column> 
     <p:column headerText="Company" sortBy="#{trans.companyName}"> 
      #{trans.companyName} 
     </p:column> 
     <p:column headerText="Join Date" id="joinDateTime" 
      sortBy="#{trans.joinDateTime}" > 
      <h:outputText value="#{trans.joinDateTime}" /> 
     </p:column> 
    </p:dataTable> 

यहाँ मेरे कोड मेरे सेम कोड @PostConstruct

 /* 
    * method to build initial sort order for multisort 
    */ 
    private void buildSortOrder() { 
     UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot(); 
     UIComponent column = viewRoot.findComponent("transDataTable:joinDateTime"); 

     SortMeta sm1 = new SortMeta(); 
     sm1.setSortBy((UIColumn)column); 
     sm1.setSortField("joinDateTime"); 
     sm1.setSortOrder(SortOrder.DESCENDING); 
     preSortOrder.add(sm1);   
    } 

मुझे यकीन है कि यह यह करने के लिए सही तरीका है नहीं कर रहा हूँ पर कहा जाता है, लेकिन यह काम करता है। जब हम बीन कोड में देखने से आईडी का उपयोग करना चाहते हैं, तो आमतौर पर मुझे असहज महसूस होता है, क्योंकि जब लोग सावधान नहीं होते हैं तो वे बग पेश कर सकते हैं।

त्वरित संकेत के लिए धन्यवाद @CagatayCivici।

+1

बिल्कुल, खेद है कि मेरे पास पूर्ण नमूना प्रदान करने का कोई समय नहीं था, इसलिए केवल एक टिप प्रदान कर सके। एक विस्तृत उदाहरण साझा करने के लिए धन्यवाद। –

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