Extjs分頁使用Java實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)查詢
關(guān)于Ext分 頁功能的實(shí)現(xiàn)。項(xiàng)目用的是js、Ext、servlet。下面貼下代碼:
var obj = this; var pageSize = 20; //統(tǒng)計結(jié)果分頁每一頁顯示數(shù)據(jù)條數(shù) //在這里使用Store來創(chuàng)建一個類似于數(shù)據(jù)表的結(jié)構(gòu),因?yàn)樾枰h(yuǎn)程獲取數(shù)據(jù),所以應(yīng)該使用 //HttpProxy類,我是從后臺讀取的是json數(shù)據(jù)格式的數(shù)據(jù),所以使用JsonReader來解析; var proxy = new Ext.data.HttpProxy({ url:"com.test.check.servlets.QueryDetailServlet" }); var statTime = Ext.data.Record.create([ {name:"rowNo",type:"string",mapping:"rowNo"}, {name:"gpsid",type:"string",mapping:"gpsid"}, {name:"policeName",type:"string",mapping:"policeName"} ]); var reader = new Ext.data.JsonReader({ totalProperty:"count", //此處與后臺json數(shù)據(jù)中相對應(yīng),為數(shù)據(jù)的總條數(shù) root:"data" //這里是后臺json數(shù)據(jù)相對應(yīng) },statTime); var store = new Ext.data.Store({ proxy:proxy, reader:reader }); //定義分頁工具條 var bbarObj = new Ext.PagingToolbar({ pageSize: pageSize, store: store, width: 300, displayInfo: true, //該屬性為需要顯示分頁信息是設(shè)置 //這里的數(shù)字會被分頁時候的顯示數(shù)據(jù)條數(shù)所自動替換顯示 displayMsg: '顯示第 {0} 條到 {1} 條記錄,一共 {2} 條', emptyMsg: "沒有記錄", prependButtons: true }); 在我的項(xiàng)目中使用的是GridPanel來進(jìn)行顯示數(shù)據(jù)表,所以定義如下: var grid = new Ext.grid.GridPanel({ store: store, columns: [ {header:'序號',width: 33, sortable: true,dataIndex:'rowNo',align:'center'}, {id:'gpsid',header:'GPS編號',width: 85, sortable: true,dataIndex:'gpsid',align:'center'}, {header:'警員名稱',width: 90, sortable: true,dataIndex:'policeName',align:'center'} ], region:'center', stripeRows: true, title:'統(tǒng)計表', autoHeight:true, width:302, autoScroll:true, loadMask:true, stateful: true, stateId: 'grid', columnLines:true, bbar:bbarObj //將分頁工具欄添加到GridPanel上 }); //在以下方法中向后臺傳送需要的參數(shù),在后臺servlet中可以使用 //request.getParameter("");方法來獲取參數(shù)值; store.on('beforeload',function(){ store.baseParams={ code: code, timeType: timeType, timeValue: timeValue } }); //將數(shù)據(jù)載入,這里參數(shù)為分頁參數(shù),會根據(jù)分頁時候自動傳送后臺 //也是使用request.getParameter("")獲取 store.reload({ params:{ start:0, limit:pageSize } }); duty.leftPanel.add(grid); //將GridPanel添加到我項(xiàng)目中使用的左側(cè)顯示欄 duty.leftPanel.doLayout(); duty.leftPanel.expand(); //左側(cè)顯示欄滑出 |
后臺servlet獲取前臺傳輸?shù)膮?shù):
response.setContentType("text/xml;charset=GBK"); String orgId = request.getParameter("code"); String rangeType = request.getParameter("timeType"); String rangeValue = request.getParameter("timeValue"); String start = request.getParameter("start"); String limit = request.getParameter("limit"); StatService ss = new StatService(); String json = ss.getStatByOrganization(orgId, rangeType, rangeValue, start, limit); PrintWriter out = response.getWriter(); out.write(json); out.flush(); out.close(); |
下面講以下后臺將從數(shù)據(jù)庫查詢的數(shù)據(jù)組織成前臺需要的格式的json數(shù)據(jù)串
StringBuffer json = new StringBuffer(); String jsonData = ""; ...... //這里用前臺傳來的參數(shù)進(jìn)行數(shù)據(jù)庫分頁查詢 int startNum = new Integer(start).intValue(); int limitNum = new Integer(limit).intValue(); startNum = startNum + 1; limitNum = startNum + limitNum; ...... rs = ps.executeQuery(); //這里的count即是前臺創(chuàng)建的數(shù)據(jù)格式中的數(shù)據(jù)總數(shù)名稱,與之對應(yīng),data同樣 json.append("{count:" + count + ",data:[{"); int i = startNum - 1; //該變量用來設(shè)置數(shù)據(jù)顯示序號 while(rs.next()){ i = i + 1; //這里的rowNo與前臺配置的數(shù)據(jù)字段名稱想對應(yīng),下面同樣 json.append("rowNo:'" + i + "',"); String gpsId = rs.getString("GPSID"); json.append("gpsid:'" + gpsId + "',"); String policeName = rs.getString("CALLNO"); json.append("policeName:'" + policeName + "',"); json.append("},{"); } jsonData = json.substring(0, json.length()-2); jsonData = jsonData + "]}"; //組成的json數(shù)據(jù)格式應(yīng)該是: //{count:count,data:[{rowNo:rowNo,gpsId:gpsId,policeName:policeName},....]} |
就這樣完成了前臺的數(shù)據(jù)查詢交互;
希望我的例子對各位有用。
posted on 2014-12-08 21:55 順其自然EVO 閱讀(463) 評論(0) 編輯 收藏 所屬分類: 測試學(xué)習(xí)專欄 、web 前端性能測試