posts - 9,  comments - 11,  trackbacks - 0
          http://www.eps2008.cn/index.php?aid=50 修改flexigrid源碼一(json,checkbox)

           

          1.修改默認(rèn)的json格式為key:value

          修改前

          rows: [{id:'ZW',cell:['ZW','ZIMBABWE','Zimbabwe','ZWE','716']},{id:'ZW',cell:['ZW','ZIMBABWE','Zimbabwe','ZWE','716']}]

          修改后

          rows: [{id:'1',name:'Anson',sex:'男',email:'chents@gpcsoft',qq:'75526201'},{id:'2',name:'Anson',sex:'男',email:'chents@gpcsoft',qq:'75526201'}]

          源碼修改說明

          找到 if (p.dataType=='json')

          將其后的大括號(hào){}內(nèi)容改為:

          $.each
          (
          data.rows,
          function(i,row)
          {
          var tr = document.createElement('tr');
          if (i % 2 && p.striped) tr.className = 'erow';

          if (row.id) tr.id = 'row' + row.id;

          //by anson QQ:75526201 chents@gpcsoft.com 轉(zhuǎn)載請(qǐng)保留
          var tdVal = [];

          //給每行添加id
          if (p.rowId){

          $.each( data.rows[i], function(x,y){

          if(p.rowId==x){tr.setAttribute('id',y);
          }

          })
          }

          if (p.colModel){

          for (j=0;j<p.colModel.length;j++){

          var cm = p.colModel[j];
          //取列名
          var seleceName = cm.name;
          //json Bug修復(fù)://打包文件中未加入,請(qǐng)自行加入 
          if(typeof(data.rows[i][seleceName])=='undefined'){data.rows[i][seleceName]=''}

          //過濾key
          $.each( data.rows[i], function(x,y){

          if(seleceName==x){tdVal.push(y)}

          })

          }
          }

          //add cell
          $('thead tr:first th',g.hDiv).each
          (
          function ()
          {

          var td = document.createElement('td');
          var idx = $(this).attr('axis').substr(3);
          td.align = this.align;
          td.innerHTML = tdVal[idx];
          //td.innerHTML = row.cell[idx];
          $(tr).append(td);
          td = null;
          }
          );


          if ($('thead',this.gDiv).length<1) //handle if grid has no headers
          {

          for (idx=0;idx<cell.length;idx++)
          {
          var td = document.createElement('td');
          //td.innerHTML = row.cell[idx];
          td.innerHTML = tdVal[idx];
          $(tr).append(td);
          td = null;
          }
          }

          $(tbody).append(tr);
          tr = null;
          }
          );
           

          2.加入checkbox

          只要設(shè)置checkbox:true即可在前面顯示多選框

          源碼修改說明

          a.找到 $('div:eq('+n+')',g.cDrag).css({'left':cdpos+'px'}).show();

          替換為:

          //添加多選框
          if (p.checkbox) {
          $('div:eq('+n+')',g.cDrag).css({'left':cdpos+22+'px'}).show();
          }
          else{
          $('div:eq('+n+')',g.cDrag).css({'left':cdpos+'px'}).show();
          }

          b.找到//add cell

          前面插入:

          //添加多選框
          if (p.checkbox) {

          var cth = $('<th/>');

          var cthch = $('<input type="checkbox" value="' + $(tr).attr('id') +'"/>');

          var objTr = $(tr);

          cthch.addClass("noborder").click(function(){

          if(this.checked){

          objTr.addClass('trSelected');
          }
          else{
          objTr.removeClass('trSelected');
          }
          })

          cth.addClass("cth").attr({ width: "22"}).append(cthch);

          $(tr).prepend(cth);


          }

          c.找到$(this).toggleClass('trSelected');

          后面插入:

          //添加多選框
          if(p.checkbox){
          if($(this).hasClass('trSelected')){
          $(this).find('input')[0].checked=true;
          }
          else{
          $(this).find('input')[0].checked=false
          }
          }

          d.找到if ($('th',g.hDiv).length)

          在其后的{}大括號(hào)中加入

          //添加多選框
          if (p.checkbox) {
          $('tr',g.hDiv).each(
          function(){

          var cth = $('<td/>');

          var cthch = $('<input type="checkbox"/>');

          cthch.click(function(){
          if(this.checked){
          $('tbody tr',g.bDiv).each(function(){
          $(this).addClass('trSelected').find('input')[0].checked=true;
          })
          }
          else{

          $('tbody tr',g.bDiv).each(function(){
          $(this).removeClass('trSelected').find('input')[0].checked=false;
          })
          }
          })

          cth.addClass("cth").attr({ width: "22" }).append(cthch);

          $(this).prepend(cth);

          })
          };

          e.找到p = $.extend({

          添加默認(rèn)設(shè)置

          checkbox:false,//是否要多選框
          rowId:'id',//綁定行的id

           

          修改后結(jié)果

          點(diǎn)擊查看原圖

          未加入多條件搜索,右鍵,打印,導(dǎo)出Excel等功能,如有需要聯(lián)系作者Anson,QQ:75526201

          點(diǎn)擊查看原圖

          修改后文件下載:點(diǎn)擊下載附件

           

           


          http://hi.baidu.com/wzjstrong/blog/item/fc64e036da94221d90ef393b.html
          http://blog.csdn.net/liuzhoulong/article/details/6076071
          jQuery插件flexigrid是像ext的DataGrid一樣的活動(dòng)表格插件,使用它首先要引入query.js,還要引入flexigrid.js和flexigrid.css
                  看看插件中部分代碼以及說明 

          Titleif (t.grid)   
          1.             return false; // return if already exist   
          2.   
          3.         // apply default properties   
          4.         p = $.extend({   
          5.             height : 200, // flexigrid插件的高度,單位為px   
          6.             width : 'auto', // 寬度值,auto表示根據(jù)每列的寬度自動(dòng)計(jì)算   
          7.             striped : true, // 是否顯示斑紋效果,默認(rèn)是奇偶交互的形式   
          8.             novstripe : false,   
          9.             minwidth : 30, // 列的最小寬度   
          10.             minheight : 80, // 列的最小高度   
          11.             resizable : true, // 是否可伸縮   
          12.             url : false, // ajax方式對(duì)應(yīng)的url地址   
          13.             method : 'POST', // 數(shù)據(jù)發(fā)送方式   
          14.             dataType : 'xml', // 數(shù)據(jù)加載的類型   
          15.             checkbox : false,// 是否要多選框   
          16.             errormsg : '連接錯(cuò)誤!',// 錯(cuò)誤提示信息   
          17.             usepager : false, // 是否分頁(yè)   
          18.             nowrap : true, // 是否不換行   
          19.             page : 1, // 默認(rèn)當(dāng)前頁(yè)   
          20.             total : 1, // 總頁(yè)面數(shù)   
          21.             useRp : true, // 是否可以動(dòng)態(tài)設(shè)置每頁(yè)顯示的結(jié)果數(shù)   
          22.             rp : 15, // 每頁(yè)默認(rèn)的結(jié)果數(shù)   
          23.             rpOptions : [5,101520253040],// 可選擇設(shè)定的每頁(yè)結(jié)果數(shù)   
          24.             title : false,// 是否包含標(biāo)題   
          25.             pagestat : '顯示第 {from} 條到 {to} 條,共 {total} 條數(shù)據(jù)',// 顯示當(dāng)前頁(yè)和總頁(yè)面的樣式   
          26.             procmsg : '正在處理,請(qǐng)稍候 ...',// 正在處理的提示信息   
          27.             query : '',// 搜索查詢的條件   
          28.             qtype : '',// 搜索查詢的類別   
          29.             nomsg : '沒有數(shù)據(jù)存在!',// 無結(jié)果的提示信息   
          30.             minColToggle : 1, // 允許顯示的最小列數(shù)   
          31.             showToggleBtn : true, // 是否允許顯示隱藏列,該屬性有bug設(shè)置成false點(diǎn)擊頭腳本報(bào)錯(cuò)   
          32.             hideOnSubmit : true,// 隱藏提交   
          33.             autoload : true,// 自動(dòng)加載   
          34.             blockOpacity : 0.5,// 透明度設(shè)置   
          35.             onToggleCol : false,// 當(dāng)在行之間轉(zhuǎn)換時(shí),可在此方法中重寫默認(rèn)實(shí)現(xiàn),基本無用   
          36.             onChangeSort : false,// 當(dāng)改變排序時(shí),可在此方法中重寫默認(rèn)實(shí)現(xiàn),自行實(shí)現(xiàn)客戶端排序   
          37.             onSuccess : false,// 成功后執(zhí)行   
          38.             onSubmit : false   
          39.               // 調(diào)用自定義的計(jì)算函數(shù)   
          40.           }, p);  
          了解了每個(gè)屬性的含義后就可以根據(jù)自己的需要來配置了,

          Title
          $("#flex1").flexigrid({
          	url: 'post2.php',
          	dataType: 'json',
          	colModel : [
          		{display: 'ISO', name : 'iso', width : 40, sortable : true, align: 'center'},
          		{display: 'Name', name : 'name', width : 180, sortable : true, align: 'left'},
          		{display: 'Printable Name', name : 'printable_name', width : 120, sortable : true, align: 'left'},
          		{display: 'ISO3', name : 'iso3', width : 130, sortable : true, align: 'left', hide: true},
          		{display: 'Number Code', name : 'numcode', width : 80, sortable : true, align: 'right'}
          		],
          	buttons : [
          		{name: 'Add', bclass: 'add', onpress : test},
          		{name: 'Delete', bclass: 'delete', onpress : test},
          		{separator: true}
          		],
          	searchitems : [
          		{display: 'ISO', name : 'iso'},
          		{display: 'Name', name : 'name', isdefault: true}
          		],
          	sortname: "iso",
          	sortorder: "asc",
          	usepager: true,
          	title: 'Countries',
          	useRp: true,
          	rp: 15,
          	showTableToggleBtn: true,
          	width: 700,
          	height: 200
          });   
          
          Title$("#flex1").flexigrid
             (
             {
                  url:  './contract_getAllJsonData.action?startDate=<ss:date name="startDate" format="yyyy-MM-  dd"/>&endDate=<ss:date name="endDate" format="yyyy-MM-dd"/>&contractId=${contractId}',
             dataType: 'json',
             method: 'POST',
             colModel : [
              {display: '廣告位', name : 'advName', width : 300, sortable : true, align: 'center'},
              {display: '開始投放時(shí)間', name : 'start', width : 180, sortable : true, align: 'left'},
              {display: '結(jié)束投放時(shí)間', name : 'end', width : 180, sortable : true, align: 'left'},
              {display: '點(diǎn)擊數(shù)', name : 'clicks', width : 80, sortable : true, align: 'left'},
              {display: '曝光數(shù)', name : 'impressions', width : 80, sortable : true, align: 'left'},
              {display: '分析', name : 'impressions', width : 80, sortable : true, align: 'left'}
              ],
                sortname: "advName",
             sortorder: "asc",
             usepager: true,
             useRp: true,   
             title: '統(tǒng)計(jì)期間該合同廣告位投放',
             showTableToggleBtn: true,
             width: 1000,
             height: 200
             }
           );  
          后臺(tái)java代碼(struts2),由于框架不同代碼有可能不同,我這里一次查出了所有需要數(shù)據(jù),沒有考慮分頁(yè),需要分頁(yè)的話,請(qǐng)將page 等信息傳入后來查詢。
          /**
            * 用于結(jié)合flexigrid實(shí)現(xiàn)可選表格
            * @return
            */
           public String getAllJsonData() {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
            ContractReportService service = (ContractReportService) SpringHelper
            .getBean(TMG_REPORTS_CONTRACT);
            Map map = new HashMap();
            map.put("contractId", contractId);
            map.put("startdate", startDate);
            map.put("enddate", endDate);
            list = service.getAdvListbyContract(map);
            try {
            List mapList = new ArrayList();  
            for(int i = 0; i < list.size(); i++) { 
               Map cellMap = new HashMap(); 
               ContractReport cr = (ContractReport)list.get(i);
                     cellMap.put("cell", new Object[] {cr.getAdvName(), formatter.format(cr.getStart()), formatter.format(cr.getEnd()), cr.getClicks(), cr.getImpressions(),"<img alt='分析' src='../image/analyse.gif'>"});    
                     mapList.add(cellMap);  
            }
               Map pageInfo = new HashMap();     
               pageInfo.put("rows", mapList);
               JSONObject object = new JSONObject();  
               object.accumulateAll(pageInfo);
               Struts2Utils.getResponse().setContentType("text/x-json");
               Struts2Utils.getResponse().setCharacterEncoding("UTF-8");
               Struts2Utils.getResponse().setHeader("Cache-Control", "no-cache");
               Struts2Utils.getResponse().getWriter().write(object.toString());
               Struts2Utils.getResponse().getWriter().flush();
               Struts2Utils.getResponse().getWriter().close();
            } catch (IOException e) {
             e.printStackTrace();
            }
            return null;
           }
           最后上圖(用highcharts和flexigrid實(shí)現(xiàn)):
          posted on 2011-07-26 20:18 Mon$ter! 閱讀(4093) 評(píng)論(2)  編輯  收藏


          FeedBack:
          # re: 修改Flexigrid源碼
          2013-09-21 13:33 | Rajesh
          i not able to add check box as you suggested can i have check box enabled flexigrid.js plugin   回復(fù)  更多評(píng)論
            
          # re: 修改Flexigrid源碼
          2013-09-21 13:36 | Rajesh
          i was getting error @ add cell, like Uncaught SyntaxError: Unexpected identifier   回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2011年7月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿

          隨筆檔案(11)

          文章分類

          最新隨筆

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 北流市| 泰州市| 垫江县| 喀喇| 麻城市| 富民县| 炎陵县| 阿城市| 张家口市| 将乐县| 若羌县| 峨山| 呼和浩特市| 古蔺县| 会东县| 大新县| 荆门市| 湘潭市| 金溪县| 开鲁县| 白沙| 沙坪坝区| 通山县| 曲阳县| 洛隆县| 揭东县| 金山区| 勐海县| 义乌市| 长寿区| 大石桥市| 忻城县| 宝坻区| 罗田县| 色达县| 安康市| 临城县| 鞍山市| 太湖县| 松江区| 克什克腾旗|