有时,我们需要设置jqgrid表格按某个列排序,或则按多个列组合排序。如何实现?
1)设置可以排序的列 sortable: true
2)设置 multiSort: true 启用组合排序
$("#jqGrid").jqGrid({ ... colModel: [ { label: '<a href="HtmlPage1.html" title="测试标题">OrderID</a>', name: 'OrderID', key: true, width: 75,sortable: true }, { label: 'Order Date', name: 'OrderDate', editable: true, width: 150,sortable: true }, { label: 'Freight', name: 'Freight', editable: true, width: 150 }
] ... multiSort: true, //是否组合排序. true:组合排序 ... });
注意事项:
如果是用jqgrid自带的排序功能,则只能实现对当前页面的内容排序。
而我们往往是需要将整个表格数据进行排序,这时需要用到服务端排序(即需要将排序的方式传递给服务端,服务端根据排序要求再次返回数据)
后台端获取传入的排序字段:sidx、sord
sidx:字段名,如果是组合排序则是前面字段排序加最后一个字段。 有点抽象,例子: id asc,name desc,code 最后字段为code
sord:排序方式asc/desc
string sidx = Request["sidx"];//排序条件 string sord = Request["sord"];//最后个字段排序方式
生成排序:
sql = string.Format(@"select * from ({0}) order by {1}", sql, sidx+" "+sord);