有時,我們需要設置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);