فرز DataTable من جانب الخادم في RichFaces
سؤال
لدي جدول بيانات يحتوي على عدد متغير من الأعمدة وأداة تمرير البيانات.كيف يمكنني تمكين الفرز من جانب الخادم؟أفضل أن يتم تشغيله بواسطة المستخدم بالنقر فوق رأس العمود.
<rich:datascroller for="instanceList" actionListener="#{pageDataModel.pageChange}"/>
<rich:dataTable id="instanceList" rows="10" value="#{pageDataModel}"
var="fieldValues" rowKeyVar="rowKey">
<rich:columns value="#{pageDataModel.columnNames}" var="column" index="idx">
<f:facet name="header">
<h:outputText value="#{column}"/>
</f:facet>
<h:outputText value="#{classFieldValues[idx]}" />
</rich:columns>
</rich:dataTable>
لدي بالفعل طريقة على الحبة لتنفيذ هذا النوع.
public void sort(int column)
المحلول
انتهى بي الأمر بفعل ذلك يدويًا.أقوم بإضافة علامة دعم إلى علامة نص الرأس، مثل ذلك.
<h:outputText value="#{column}">
<a4j:support event="onclick" action="#{pageDataModel.sort(idx)}"
eventsQueue="instancesQueue"
reRender="instanceList,instanceListScroller"/>
</h:outputText>
للحصول على الأسهم التصاعدية/التنازلية، أضفت فئة CSS.
<h:outputText value="#{column}" styleClass="#{pageDataModel.getOrderClass(idx)}" >
<a4j:support event="onclick" action="#{pageDataModel.sort(idx)}"
eventsQueue="instancesQueue"
reRender="instanceList,instanceListScroller"/>
</h:outputText>
نصائح أخرى
يوجد حل أنيق إلى حد ما لهذا الحل هنا:
http://livedemo.exadel.com/richfaces-demo/richfaces/sortingFeature.jsf?tab=ex-usage
يتجنب هذا العرض التوضيحي استخدام العلامة.
يحتاج نموذج البيانات الخاص بك إلى تنفيذ واجهة "قابلة للتعديل".
سوف يطلق عليه جدول البيانات modify()
طريقة لعمل فرز وتصفية الخوادم.
قم بإلقاء نظرة على الخاصية "sortBy" لـ "rich:columns"، ربما هذا هو ما تبحث عنه.مرجع الوجوه الغنية
ألا يمكنك استخدام Collection.sort() فقط عند استرداد القائمة؟