سؤال

لدي جدول بيانات يحتوي على عدد متغير من الأعمدة وأداة تمرير البيانات.كيف يمكنني تمكين الفرز من جانب الخادم؟أفضل أن يتم تشغيله بواسطة المستخدم بالنقر فوق رأس العمود.

<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() فقط عند استرداد القائمة؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top