2 Replies Latest reply on Aug 26, 2008 6:56 AM by Thiagu Mariappan

    how can i sort teh computed column value in data table

    Thiagu Mariappan Novice

      Hai everyone,

      In a page with details for many products, I display the product name with its price information by using the data Table components.

      The columns used for the details of any product are sortable by design. Then I have one more dynamic column “EMIâ€Â� – Equated Monthly Installment. It is not from entity bean but it is computed in session bean and by default the EMI is for 1 year.

      In this page the user can also select payment period by using a drop down and when the EMI period is changed like this, I compute the new EMI value and then display it in the data table.

      And by design, EMI column should also be sortable. I wish to know if this is possible through any Richface component.

      This is my sample xhtml code:

      <h:selectOneMenu value="#{store.emiPerid}" >
      <f:selectItems value="#{emiPeridItems}"/>
      <a4j:support event="onchange" actionListener="#{store.updateEmi}" />
      </h:selectOneMenu >
      <rich:dataTable value="#{StoreList}" var="cap" >
       <rich:column sortBy="#{cap.productName}">
       <f:facet name="header">
       <h:outputText value="Product Name"/>
       <h:outputText value="#{cap.productName }"/>
       <rich:column sortBy="#{cap.price}">
       <f:facet name="header">
       <h:outputText value="Price"/>
       <h:outputText value="#{cap.price}"/>
       <f:facet name="header">
       <h:outputText value="EMI"/>
       <h:outputText value="#{StoreEmiMap[cap]}"/>

      This is my session bean code
      public class StoreAction implements Store, Serializable
       List<TblStore> StoreList;
       double emiPerid;
      List<SelectItem> emiPeridItems
       Map<TblStore, double> StoreEmiMap;
       public String beginAction() {
       emiPeridItems=new List<SelectItem>();
      for(int 1=1;i<10;i++)
       emiPeridItems.add(new SelectItem(i+"Years",i));
       StoreList= =em.createQuery("select t from TblStore t ").getResultList();
       StoreEmiMap =new HashMap<TblStore, double>();
       For(TblStore a: StoreList)
      StoreEmiMap.put(a, emi for one year by default);
       public void updateEmi(ActionEvent event)
       //Compute the new EMI.
       //Update the computed new EMI values to the HashMap

      If the EMI is brought from the entity bean then there is no issue and the column can also be sorted.
      But it is a computed value. So I wish to know how it can be made sortable.

      Any one can help me out on this, Please?