Start Building Professional
Web Apps Today


 
Categories Question details Back To List
Question  posted by Brendan on Oct 10, 2008 12:18
open dhtmlx forum
dhtmlXGrid - server side sorting sub grid

I have a page in which I am trying to sort a sub grid. Sorting on the parent grid works just fine. When I try to sort on the sub grid however, it will sort (ASC) the first time I click the header, but the sorting arrow appears and disappears right away, while keeping in the correct sorted state(ASC). Then when I click on the header to sort (DESC) it the second time, it seems to sort(DESC) it correctly, but the sort arrow appears and disappears very quickly, and then reverts back to the previous sort state(ASC).

The weird thing is that if I insert an alert() statement in front of the function this.setSortImgState(true,ind,direct); and then click on ok in the dialog box that it creates, the sub grid sorts just fine! Any help would be great! Thank you!

function doInitRegionalMinstrySubGrid(subGridObj,rowId,rowIndex) {
subGridObj.enableSmartRendering(true);

subGridObj.attachEvent("onBeforeSorting",function(ind,type,direct){
                var subGridQString = "regionalXML.php";
                
                this.clearAll(); // clear grid
                this.loadXML(subGridQString+(subGridQString.indexOf("?")>=0?"&":"?")+"orderby="+ind+"&direct="+direct);
                this.setSortImgState(true,ind,direct); //set a correct sorting image            
                
                return false;
            });
            
subGridObj.loadXML('regionalXML.php',function(){
            subGridObj.callEvent("onGridReconstructed",[]); //will correct sub-grid size after data loaded in it
            });             
}

Answer posted by Support on Oct 13, 2008 01:51
Try to change it as 

subGridObj.attachEvent("onBeforeSorting",function(ind,type,direct){ 
  var subGridQString = "regionalXML.php"; 
   
  this.clearAll(); // clear grid 
  this.loadXML(subGridQString+(subGridQString.indexOf("?")>=0?"&":"?")+"orderby="+ind+"&direct="+direct,function(){  
        this.setSortImgState(true,ind,direct); //set a correct sorting image  
  }); 
   
  return false; 
  }); 

The row sorting state can be reset by incoming XML ( it it contains head section and in some other cases ), but if you will use after call to set sorting state -  it will be set after data loading and must not be corrupted.