1. 程式人生 > >easyui datagrid使用資料重新整理

easyui datagrid使用資料重新整理

載入相關js和css,因為easyui依賴jquery,所有載入easyui前要先載入jquery,否則為提示找不到datagrid

Html程式碼
  1. <!-- 載入jquery -->
  2.         <scripttype="text/javascript"src="plugins/jquery/jquery-1.4.2.min.js"></script>
  3.         <!-- 載入jquery-easyui -->
  4.         <linkrel="stylesheet"type="text/css"href="plugins/jquery/jquery-easyui-1.1.2/themes/default/easyui.css"
    >
  5.         <linkrel="stylesheet"type="text/css"href="plugins/jquery/jquery-easyui-1.1.2/themes/icon.css">
  6.         <scripttype="text/javascript"src="plugins/jquery/jquery-easyui-1.1.2/jquery.easyui.min.js"></script>

介面加入

Html程式碼
  1. <tableid="cxdm"></table>

載入datagrid的js程式碼

Java程式碼
  1. //頁面載入
  2. $(document).ready(function(){  
  3.             loadGrid();  
  4. });  
  5. //載入表格datagrid
  6. function loadGrid()  
  7. {  
  8.     //載入資料
  9.     $('#cxdm').datagrid({  
  10.                 width: 'auto',  
  11.                 height:300,               
  12.                 striped: true,  
  13.                 singleSelect : true,  
  14.                 url:'getPsNewConsultList.action'
    ,  
  15.                 //queryParams:{},
  16.                 loadMsg:'資料載入中請稍後……',  
  17.                 pagination: true,  
  18.                 rownumbers: true,     
  19.                 columns:[[  
  20.                     {field:'adviceid',title: '來文號',align: 'center',width: getWidth(0.2)},  
  21.                     {field:'consulter',title: '案由',align: 'center',width: getWidth(0.45),  
  22.                         //新增超級鏈,並將來文號作為引數傳入
  23.                         formatter:function(val,rec){  
  24.                             //alert(rec.adviceid);
  25.                             return"<a href='jsp/proposal/psconsultview.jsp?id="+rec.adviceid+"'>"+val+"</a>";  
  26.                        }  
  27.                     },  
  28.                     {field:'content',title: '狀態',align: 'center',width: getWidth(0.2)},  
  29.                     {field:'replynumber',title: '回覆數',align: 'center',width: getWidth(0.05)}                                                          
  30.                 ]]  
  31.             });  
  32. }  
  33. //為loadGrid()新增引數
  34.         var queryParams = $('#cxdm').datagrid('options').queryParams;  
  35.         queryParams.who = who.value;  
  36.         queryParams.type = type.value;  
  37.         queryParams.searchtype = searchtype.value;  
  38.         queryParams.keyword = keyword.value;  
  39.         //重新載入datagrid的資料
  40.         $("#cxdm").datagrid('reload');  

 datagrid新增引數的方式

Js程式碼
  1. //為loadGrid()新增引數
  2. var queryParams = $('#cxdm').datagrid('options').queryParams;  
  3.         queryParams.who = who.value;  
  4.         queryParams.type = type.value;  
  5.         queryParams.searchtype = searchtype.value;  
  6.         queryParams.keyword = keyword.value;  
  7.         //重新載入datagrid的資料
  8.         $("#cxdm").datagrid('reload');  

 或者直接新增在url中

Js程式碼
  1. $('#repeatpspolal').datagrid({  
  2.      title:'重複的未初分提案',  
  3.      loadMsg:"資料載入中,請稍後……",  
  4.      region:'north',  
  5.      url:"getRepeatPs.action?documentnumber="+documentnumber+"&simDegree="+simDegree,  
  6. 。。。。。。  

Action層

Java程式碼
  1. //當前頁碼
  2. privateint page;  
  3. .........  
  4. //徵詢意見結果集
  5. private List<Object> rows;  
  6. ...........  
  7. @SuppressWarnings("unchecked")  
  8. public String getPsNewConsultList() throws GlobalException {  
  9.         //獲取每頁顯示的行數
  10.         int pageRows=10;  
  11.         if(null!=request.getParameter("rows")) {  
  12.             pageRows=Integer.parseInt(request.getParameter("rows").toString());  
  13.         }  
  14.         ...........  
  15.         //獲取結果集
  16.         this.setRows(proposalService.getPsNewConsultList(consulter,consultee,type,psId,psContent,pageRows*(page-1)+1,pageRows*page));  
  17.         //獲取總記錄數
  18.         this.setTotal(100);  
  19.         ...............  
  20. }  

其中的page由datagrid傳入,當用戶在datagrid左下角選擇每頁顯示的行數時,datagrid會將該值已引數形式附加到url後面傳入action中,名字就叫page,還要將結果總行數total傳給datagrid,用於分頁

不知道是datagrid配置有誤還是datagrid的bug,datagrid的結果集和每頁顯示的行數都叫rows,重名了

解決辦法如上,結果集還是叫rows,但是List的型別改為Object而不能用實體的型別,每頁顯示的行數通過request獲取

action配置時,要繼承json-default,json-default繼承自struts-default,還要配置輸出結果型別為json

Java程式碼
  1. <action name="getPsNewConsultList"class="proposalConsultAction" method="getPsNewConsultList">  
  2.         <result name="success" type="json">  
  3.              <param name="includeProperties">  
  4.                     ^rows\[\d+\]\.\w+,total  
  5.              </param>  
  6.              <param name="noCache">true</param>    
  7.             <param name="ignoreHierarchy">false</param>   
  8.               </result>  
  9.     </action>  

service層

Java程式碼
  1. @SuppressWarnings("unchecked")  
  2.     public List getPsNewConsultList(String consulter,String consultee,String type,String psId,String psContent,int pageRows,int page) throws Exception {  
  3.         return proposalDAO.getPsNewConsultList(consulter,consultee,type,psId,psContent,pageRows,page);  
  4.     }  

dao層只需要將ResultSet中的資料迴圈加入實體屬性,然後將實體例項加入List即可,形式如下:

Java程式碼
  1. List<Person> list=new ArrayList<Person>();  
  2. Person person=null;  
  3. while(rs.next())  
  4. {  
  5.     person=new Person();  
  6.     person.setId(i);  
  7.     person.setName("名字"+i);  
  8.     list.add(person);  
  9. }  
  10. .........  
  11. return list;