easyui datagrid使用資料重新整理
阿新 • • 發佈:2019-02-08
載入相關js和css,因為easyui依賴jquery,所有載入easyui前要先載入jquery,否則為提示找不到datagrid
Html程式碼- <!-- 載入jquery -->
- <scripttype="text/javascript"src="plugins/jquery/jquery-1.4.2.min.js"></script>
- <!-- 載入jquery-easyui -->
- <linkrel="stylesheet"type="text/css"href="plugins/jquery/jquery-easyui-1.1.2/themes/default/easyui.css"
- <linkrel="stylesheet"type="text/css"href="plugins/jquery/jquery-easyui-1.1.2/themes/icon.css">
- <scripttype="text/javascript"src="plugins/jquery/jquery-easyui-1.1.2/jquery.easyui.min.js"></script>
介面加入
Html程式碼- <tableid="cxdm"></table>
載入datagrid的js程式碼
Java程式碼- //頁面載入
- $(document).ready(function(){
- loadGrid();
- });
- //載入表格datagrid
- function loadGrid()
- {
- //載入資料
- $('#cxdm').datagrid({
- width: 'auto',
- height:300,
- striped: true,
- singleSelect : true,
- url:'getPsNewConsultList.action'
- //queryParams:{},
- loadMsg:'資料載入中請稍後……',
- pagination: true,
- rownumbers: true,
- columns:[[
- {field:'adviceid',title: '來文號',align: 'center',width: getWidth(0.2)},
- {field:'consulter',title: '案由',align: 'center',width: getWidth(0.45),
- //新增超級鏈,並將來文號作為引數傳入
- formatter:function(val,rec){
- //alert(rec.adviceid);
- return"<a href='jsp/proposal/psconsultview.jsp?id="+rec.adviceid+"'>"+val+"</a>";
- }
- },
- {field:'content',title: '狀態',align: 'center',width: getWidth(0.2)},
- {field:'replynumber',title: '回覆數',align: 'center',width: getWidth(0.05)}
- ]]
- });
- }
- //為loadGrid()新增引數
- var queryParams = $('#cxdm').datagrid('options').queryParams;
- queryParams.who = who.value;
- queryParams.type = type.value;
- queryParams.searchtype = searchtype.value;
- queryParams.keyword = keyword.value;
- //重新載入datagrid的資料
- $("#cxdm").datagrid('reload');
datagrid新增引數的方式
Js程式碼- //為loadGrid()新增引數
- var queryParams = $('#cxdm').datagrid('options').queryParams;
- queryParams.who = who.value;
- queryParams.type = type.value;
- queryParams.searchtype = searchtype.value;
- queryParams.keyword = keyword.value;
- //重新載入datagrid的資料
- $("#cxdm").datagrid('reload');
或者直接新增在url中
Js程式碼- $('#repeatpspolal').datagrid({
- title:'重複的未初分提案',
- loadMsg:"資料載入中,請稍後……",
- region:'north',
- url:"getRepeatPs.action?documentnumber="+documentnumber+"&simDegree="+simDegree,
- 。。。。。。
Action層
Java程式碼- //當前頁碼
- privateint page;
- .........
- //徵詢意見結果集
- private List<Object> rows;
- ...........
- @SuppressWarnings("unchecked")
- public String getPsNewConsultList() throws GlobalException {
- //獲取每頁顯示的行數
- int pageRows=10;
- if(null!=request.getParameter("rows")) {
- pageRows=Integer.parseInt(request.getParameter("rows").toString());
- }
- ...........
- //獲取結果集
- this.setRows(proposalService.getPsNewConsultList(consulter,consultee,type,psId,psContent,pageRows*(page-1)+1,pageRows*page));
- //獲取總記錄數
- this.setTotal(100);
- ...............
- }
其中的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程式碼- <action name="getPsNewConsultList"class="proposalConsultAction" method="getPsNewConsultList">
- <result name="success" type="json">
- <param name="includeProperties">
- ^rows\[\d+\]\.\w+,total
- </param>
- <param name="noCache">true</param>
- <param name="ignoreHierarchy">false</param>
- </result>
- </action>
service層
Java程式碼- @SuppressWarnings("unchecked")
- public List getPsNewConsultList(String consulter,String consultee,String type,String psId,String psContent,int pageRows,int page) throws Exception {
- return proposalDAO.getPsNewConsultList(consulter,consultee,type,psId,psContent,pageRows,page);
- }
dao層只需要將ResultSet中的資料迴圈加入實體屬性,然後將實體例項加入List即可,形式如下:
Java程式碼- List<Person> list=new ArrayList<Person>();
- Person person=null;
- while(rs.next())
- {
- person=new Person();
- person.setId(i);
- person.setName("名字"+i);
- list.add(person);
- }
- .........
- return list;