title: How to sort records (with code) in a grouped ListGrid?
body: <p>This is the scenario: I'm working with a listgrid that needs to be grouped, and also needs to have its records ordered within each group. I've already used the <code>ListGrid.sort()</code> and the <code>ListGrid.sort(String, SortDirection)</code> methods but none of them works properly.</p>
  
  <p>This problem doesn't show up when the grid isn't grouped (it makes the sort perfectly); and when the sort (with the listgrid is grouped) is made by clicking the column header, works fine but I need to sort it by code (without user interaction) because the header sort option needs to be disabled (and context menu too).</p>
  
  <p>I'm using SmartGWT 4.0</p>
  
  <p>Here is the class I'm using:</p>
  
  <pre class="lang-java prettyprint-override"><code>public class Access extends ListGrid {
  
      public Access() {
          super();
          setWidth("30%");
          setHeight100();
          // setShowHeaderContextMenu(false);
          setCanResizeFields(false);
          // setCanSort(false);
          setAutoFitWidthApproach(AutoFitWidthApproach.BOTH);
          setWrapCells(true);
          setFixedRecordHeights(false);
          setShowRecordComponents(true);
          setShowRecordComponentsByCell(true);
  
          ListGridField id = new ListGridField("id", "ID");
          ListGridField user = new ListGridField("user", "User");
          ListGridField access = new ListGridField("access", "Access");
  
          id.setHidden(true);
          user.setWidth("60%");
          access.setWidth("40%");
  
          access.setType(ListGridFieldType.BOOLEAN);
          access.setCanEdit(true);
  
          setFields(id, user, access);
  
          groupBy("access");
          access.setGroupTitleRenderer(new GroupTitleRenderer() {
              public String getGroupTitle(Object groupValue, GroupNode groupNode, ListGridField field, String fieldName,
                      ListGrid grid) {
                  return (String) groupValue + " - " + groupNode.getGroupMembers().length;
              }
          });
          getField("access").setGroupValueFunction(new GroupValueFunction() {
              public Object getGroupValue(Object value, ListGridRecord record, ListGridField field, String fieldName,
                      ListGrid grid) {
                  Boolean access = (Boolean) value;
                  if (access)
                      return "With access";
                  else
                      return "Without access";
              }
          });
  
          ListGridRecord lgr1 = new ListGridRecord();
          lgr1.setAttribute("id", 1);
          lgr1.setAttribute("user", "ewgzx");
          lgr1.setAttribute("access", true);
  
          ListGridRecord lgr2 = new ListGridRecord();
          lgr2.setAttribute("id", 2);
          lgr2.setAttribute("user", "Bgfths");
          lgr2.setAttribute("access", false);
  
          ListGridRecord lgr3 = new ListGridRecord();
          lgr3.setAttribute("id", 3);
          lgr3.setAttribute("user", "utcvs");
          lgr3.setAttribute("access", true);
  
          ListGridRecord lgr4 = new ListGridRecord();
          lgr4.setAttribute("id", 4);
          lgr4.setAttribute("user", "gfdjxc");
          lgr4.setAttribute("access", false);
  
          ListGridRecord lgr5 = new ListGridRecord();
          lgr5.setAttribute("id", 5);
          lgr5.setAttribute("user", "763");
          lgr5.setAttribute("access", true);
  
          ListGridRecord lgr6 = new ListGridRecord();
          lgr6.setAttribute("id", 6);
          lgr6.setAttribute("user", "2");
          lgr6.setAttribute("access", false);
  
          ListGridRecord lgr7 = new ListGridRecord();
          lgr7.setAttribute("id", 7);
          lgr7.setAttribute("user", "35");
          lgr7.setAttribute("access", false);
  
          ListGridRecord lgr8 = new ListGridRecord();
          lgr8.setAttribute("id", 8);
          lgr8.setAttribute("user", "123");
          lgr8.setAttribute("access", true);
  
          ListGridRecord lgr9 = new ListGridRecord();
          lgr9.setAttribute("id", 9);
          lgr9.setAttribute("user", "2342");
          lgr9.setAttribute("access", true);
  
          ListGridRecord lgr10 = new ListGridRecord();
          lgr10.setAttribute("id", 10);
          lgr10.setAttribute("user", "aqwc");
          lgr10.setAttribute("access", false);
  
          setRecords(new ListGridRecord[] { lgr1, lgr2, lgr3, lgr4, lgr5, lgr6, lgr7, lgr8, lgr9, lgr10 });
  
          sort("user", SortDirection.ASCENDING);
      }
  }
  </code></pre>