Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jqgrid sort column

Tags:

jquery

jqgrid

Is it possible to dynamically sort one column of a jqGrid when clicking a button instead of clicking in the column name?

like image 457
Codyfire Avatar asked Mar 01 '12 12:03

Codyfire


3 Answers

In the button click event set the sort column in the grids postdata and then call a reload on the grid

$('#mybutton').click(function() {
    $('#yourgrid').jqGrid('setGridParam', {sortname: 'yourColumn', sortorder: 'asc'}).trigger('reloadGrid', [{page: 1}]);
});
like image 170
DisplayName Avatar answered Sep 22 '22 03:09

DisplayName


The fourth time even luckier!. Using true in the third parameter will reload the grid for sure.

$('#grid').jqGrid('sortGrid', 'id', true, 'asc');

If you don't use true in the third parameter, in the first execution, the order ('asc' or 'desc') is not updated correctly.

like image 29
Deulis Avatar answered Sep 20 '22 03:09

Deulis


A possible solution - but not pretty:

$('#grid').jqGrid('setGridParam', {sortname: 'id', sortorder: 'asc'}).trigger('reloadGrid', [{page: 1}]);
$('#gbox_grid .s-ico').css('display','none');
$('#gbox_grid #jqgh_grid_id .s-ico').css('display','');
$('#gbox_grid #jqgh_grid_id .s-ico .ui-icon-triangle-1-s').removeClass('ui-state-disabled');

as shown here

http://jsfiddle.net/qhYLT/


Another way to sort by a column programatically - specifying the order:

$('#grid').jqGrid('setGridParam', {sortorder: 'desc'});
$('#grid').jqGrid('sortGrid', 'id');

The sortGrid fires off a reload for you. It wouldn't be complete without a demo : http://jsfiddle.net/uTqD5/


Third time lucky! An undocumented feature:

$('#grid').jqGrid('sortGrid', 'id', '', 'asc');
like image 32
Paul Phillips Avatar answered Sep 22 '22 03:09

Paul Phillips