[Logo] Enterprise Client Community
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Keeping sort order in grid  XML
Forum Index -> Development
Author Message
CaptainCasa

Power User
[Avatar]

Joined: 21/11/2007 12:23:06
Messages: 5519
Offline

(from mail conversation)

When updating grid items, then you may want to keep the sort order, that is currently applied to the grid. The following code shows three different methods ("on....") which reload the grid items with different implications on sorting:

Code:
 package workplace;
 
 import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.eclnt.editor.annotations.CCGenClass;
 import org.eclnt.jsfserver.elements.impl.FIXGRIDBinding;
 import org.eclnt.jsfserver.elements.impl.FIXGRIDItem;
 import org.eclnt.jsfserver.elements.impl.FIXGRIDListBinding;
 import org.eclnt.jsfserver.elements.impl.IFIXGRIDBinding.FIXGRIDSortInfo;
 import org.eclnt.workplace.IWorkpageDispatcher;
 import org.eclnt.workplace.WorkpageDispatchedPageBean;
 
 @CCGenClass (expressionBase="#{d.DemoGridKeepSorting}")
 
 public class DemoGridKeepSorting
     extends WorkpageDispatchedPageBean 
     implements Serializable
 {
     // ------------------------------------------------------------------------
     // inner classes
     // ------------------------------------------------------------------------
 
     public class GridItem extends FIXGRIDItem implements java.io.Serializable
     {
         String i_lastName;
         String i_firstName;
         public String getLastName() { return i_lastName; }
         public void setLastName(String lastName) { i_lastName = lastName; }
         public String getFirstName() { return i_firstName; }
         public void setFirstName(String firstName) { i_firstName = firstName; }
         public void onRowSelect() { }
         public void onRowExecute() { }
     }
 
     // ------------------------------------------------------------------------
     // members
     // ------------------------------------------------------------------------
 
     FIXGRIDListBinding<GridItem> m_grid = new FIXGRIDListBinding<GridItem>();
 
     // ------------------------------------------------------------------------
     // constructors & initialization
     // ------------------------------------------------------------------------
 
     public DemoGridKeepSorting(IWorkpageDispatcher workpageDispatcher)
     {
         super(workpageDispatcher);        
         loadGridData();
     }
 
     public String getPageName() { return "/workplace/demogridkeepsorting.jsp"; }
     public String getRootExpressionUsedInPage() { return "#{d.DemoGridKeepSorting}"; }
 
     // ------------------------------------------------------------------------
     // public usage
     // ------------------------------------------------------------------------
 
     public FIXGRIDListBinding<GridItem> getGrid() { return m_grid; }
     
     public void onClearAction(javax.faces.event.ActionEvent event) 
     {
         m_grid.getItems().clear();
         m_grid.clearSortInfo();
         loadGridData();
     }
 
     public void onClearKeepAction(javax.faces.event.ActionEvent event) 
     {
         m_grid.getItems().clear();
         loadGridData();
         m_grid.resort();
     }
     
     public void onClearSort(javax.faces.event.ActionEvent event) 
     {
         m_grid.getItems().clear();
         loadGridData();
         FIXGRIDSortInfo fsi;
         fsi = m_grid.getSortInfoForReference("lastName");
         fsi.setSortSequence(0);
         fsi.setSortStatus(FIXGRIDBinding.SORT_ASCENDING);
         fsi = m_grid.getSortInfoForReference("firstName");
         fsi.setSortSequence(1);
         fsi.setSortStatus(FIXGRIDBinding.SORT_ASCENDING);
         m_grid.resort();
     }
 
     // ------------------------------------------------------------------------
     // private usage
     // ------------------------------------------------------------------------
     
     private void loadGridData()
     {
         for (int i=0; i<100; i++)
         {
             GridItem gi = new GridItem();
             gi.setLastName((i%10) + " last name " + i);
             gi.setFirstName((i%5) + " first name " + i);
             m_grid.getItems().add(gi);
         }
     }
 }
 


Please note: the sort information in the grid is kept in FIXGRIDBinding.getSortInfo() - return back a map Map<String,FIXGRIDSortInfo>. Each FIXGRIDSortInfo holds the direction and the sequence of sorting.

Please note: in the demo workplace there is an example of how to apply an initial sort sequence.

Björn Müller, CaptainCasa GmbH
 
Forum Index -> Development
Go to:   
Powered by JForum 2.1.6 © JForum Team