Sorting while maintaining filters

I am using static smart rendering on my grid and I am trying to maintain/re-apply all current filters after sorting takes place. I have used custom code in the onAfterSorting event, and the logic is correct, but it seems to loop through the for loop too quickly to correctly re-apply the filters. I have come to this conclusion because if I insert an alert() in the code before the filterBy function call, it works just fine.



Also, I have to use this.callEvent(“onAfterSorting”,[]); in the onBeforeSorting event to call the onAfterSorting event. My script doesn’t seem to call the onAfterSorting event on its own. I am not sure if this has anything to do with it.



Is there perhaps another way to maintain these filters when sorting using static smart rendering? Thanks again!



subGridObj.attachEvent(“onBeforeSorting”,function(ind,type,direct){

                 this.clearAll(); // clear grid

                 this.loadXML(subGridQString+(subGridQString.indexOf("?")>=0?"&":"?")+“orderby=”+ind+"&direct="+direct+"&ManufId=100004"); //load a new dataset from the server, with necessary order                

                 this.setSortImgState(true,ind,direct); //set a correct sorting image

                

                 // Calls the on after sorting even to apply all the filters after the sorting                

                 this.callEvent(“onAfterSorting”,[]);

                

                 return false;

             });

                         

            // keep/reapply all current filters after applying a sort

            subGridObj.attachEvent(“onAfterSorting”,function(){                                                

                

                for( var i = 0; i < this.hdr.rows[2].cells.length; i++ ) {

                    // If a filter does exist in the 2nd row of the header

                    if( this.hdr.rows[2].cells[i].getElementsByTagName(“INPUT”)[0] ) {                    

                        // if a value exists in the filter

                        if(this.hdr.rows[2].cells[i].getElementsByTagName(“INPUT”)[0].value) {                                                        

                            alert( 'filter: ’ + i + ’ by: ’ + this.hdr.rows[2].cells[i].getElementsByTagName(“INPUT”)[0].value );

                            this.filterBy( i, this.hdr.rows[2].cells[i].getElementsByTagName(“INPUT”)[0].value, true );                            

                        }

                    }

                }                

                 return true;

             });

It can be done as
this.loadXML(subGridQString+(subGridQString.indexOf("?")>=0?"&":"?")+“orderby=”+ind+"&direct="+direct+"&ManufId=100004",function(){
subGridObj.filterByAll();//reapplly all filters created by shortcuts or makeFilter method
});