qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          Extjs分頁使用Java實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)查詢

          關(guān)于Ext分 頁功能的實現(xiàn)。項目用的是js、Ext、servlet。下面貼下代碼:
          var obj = this;
          var pageSize = 20;   //統(tǒng)計結(jié)果分頁每一頁顯示數(shù)據(jù)條數(shù)
          //在這里使用Store來創(chuàng)建一個類似于數(shù)據(jù)表的結(jié)構(gòu),因為需要遠程獲取數(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
          });
          在我的項目中使用的是GridPanel來進行顯示數(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添加到我項目中使用的左側(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ù)進行數(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 閱讀(462) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄web 前端性能測試

          <2014年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 象山县| 仁怀市| 富川| 济源市| 温州市| 德钦县| 鄂伦春自治旗| 嵊泗县| 车险| 吕梁市| 古交市| 海伦市| 盘山县| 同江市| 汾阳市| 手游| 平罗县| 昭觉县| 兴文县| 长汀县| 定西市| 禹城市| 汉沽区| 长宁县| 乌拉特前旗| 霍林郭勒市| 商南县| 宜黄县| 富民县| 农安县| 河源市| 博乐市| 鄢陵县| 新疆| 内黄县| 宜昌市| 盐源县| 镇巴县| 汶川县| 北流市| 宁津县|