做項目遇到個關於排序問題,想着在前端排序,正好Easyui有這個功能,所以就拿來用了一下,因為跟官網的Demo不太一樣,所以總結一下;
首先這一列是要排序的列(當然,在生產環境,這一列是隱藏的,在開發階段,我沒有隱藏而已),不用多說可定是CEO排在最上面,Leader排在中間,Employee排后面,默認的順序是這樣的;
然后我在該列加一個配置
就是 sortable:true 的配置,這個配置告訴datagrid表示這類是可以排序的,同時在這列的表頭多了一個排序按鈕,就像這樣
當出現這個箭頭的時候;你可以點擊一下,然后就可以排序了,但這並不是最終的目的,我們的目地是一開始就要排序好,而不是手動再去點點;
於是在datafrid中配置
onSortColumn方法;該方法,就是排序的方法
onSortColumn: function (sort, order) { alert("sort:"+sort+",order:"+order+""); }
,當你添加過該方法后,你再去點擊,那個排序按鈕,就會出現
第一個值是排序的字段,第二個值是排序的順序 倒敘 ,或者降序;
有了這個之后 ,在datafrid中配置
sortName:'position',
sortOrder:'desc',
sortName就是你要排序的字段名;
sortOrder就是排序的數序;
好的,上面的都配置好了之后就要開始寫自定義排序函數了,如下
{ title: '員工編號', field: 'id', align: "center", width: '14%' },{ title:'是否是領導', field:'position', // hidden:true, align: "center", width: '10%', sortable:true, sorter:function (a,b) { return (a.length<b.length?1:-1); }
請注意sorter方法,這個方法有兩個參數,接下來就對這個參數就行判斷吧,我這里使用長度來判斷的,短的排在上面,你們可以根據自己實際需求進行排序,再次刷新頁面,直接就是排序好的表格了
最后,需要做的就是將這一列隱藏就好了(當然根據個人需要!)
重點要說一下的就是,建議首先寫sorter方法,這里定義了你排序的條件,有了這個條件之后,再去定義排序的規則(正/逆),就可以了!