Ext列表展現--普通排序sortable--全局排序remoteSort(EXTJS 全局排序問題)


關於Ext的排序問題,一般涉及到兩種方式。

A。一種是默認的客戶端排序機制,對當前頁進行排序。sortable

   這種排序模式不用多說,是人都會:

     1.可以在Ext.grid.ColumnModel列模式中,設置sortable:false,此列為可排序。

      var cm = new Ext.grid.ColumnModel([//定義列顯示模式          {id: "name",header: "部門名稱",dataIndex: 'name',width: 50, sortable:false},           

      ]);

     2.總體設置Ext.grid.ColumnModel的所有列的默認排序方式。

       cm.defaultSortable = true;//默認列全部可排序     

       cm.setDefaultSort('name', 'DESC');也可如:按名字倒序

B。進行服務器端全局排序方式。remoteSort

   這種排序方式,大家都知道,但是不一定能用好,需要一下幾個步驟,少一個都不行。

   1.數據集Ext.data.Store中設置參數:remoteSort: true

   2.列模式Ext.grid.ColumnModel中需要進行全局排序的列中加入參數:remoteSort: true

   3.后台組合數據集的方法中,

    通過:String sort= request.getParameter("sort");//要排序的列名--無需定義,ext自動后傳           String dir= request.getParameter("dir");//要排序的方式--無需定義,ext自動后傳

    取數據集的時候,把這兩個參數加進去,就爽了。

這時候到前台試試,看看是不是就可以進行全局排序了。

 

 

下面是服務器端排序的具體補充:

首先獲取這兩個值: String sort= request.getParameter("sort");//要排序的列名--無需定義,ext自動后傳 String dir= request.getParameter("dir");//要排序的方式--無需定義,ext自動后傳 其中sort對應數據庫中的某個字段 dir表示為asc或desc即升序或降序 sql語句就是普通的語句: select * from user where id>50 order by sort dir

 

 

 4.后台排序

在默認的情況下,Grid只能對當前頁的數據進行排序,如果對所有的數據排序,則需要將排序信息提交到后台,由后台將信息組裝到SQL里,然后再由后台將處理好的數據返回給前台。     var store = new Ext.data.Store({         proxy: new Ext.data.HttpProxy({url:'09_01.jsp'}),         reader: new Ext.data.JsonReader({             totalProperty: 'totalProperty',             root: 'root'         }, [             {name: 'id'},             {name: 'name'},             {name: 'descn'}         ]),         remoteSort: true     }); 其中remoteSort: true表示允許后台排序,這樣在排序時就會有變化,不會立即顯示出排序的結果,而是向后台提交兩個參數,分別是sort和dir,表示要排序的字段與升序或降序。

jsp則進行相應的處理 String start = request.getParameter("start"); String limit = request.getParameter("limit");

String sort = request.getParameter("sort"); String dir = request.getParameter("dir"); 再進行數據庫分頁,並返回json格式的分頁數據。

 

 

 

String sort= request.getParameter("sort");

if(sort != null){
       String property = "";
       String direction = "";
       JSONArray myJsonArray = new JSONArray(sort);
       for(int i=0 ; i < myJsonArray.length() ;i++){
        JSONObject myjObject = myJsonArray.getJSONObject(i);
        property = myjObject.getString("property");
        direction = myjObject.getString("direction");
       }
       String sql="user_basic order by "+property+" "+direction+" ";


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM