亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

EasyUI 數據表格datagrid列自適應內容寬度的實現

2019-11-19 11:10:10
字體:
來源:轉載
供稿:網友

項目初期在加載數據表格的時候為了提高表格數據渲染速度,設置了默認寬度。

現需求需要加一個表格自適應的功能,觸發改功能,改變列寬度,但是不重新渲染表格,不發生數據請求。

設計思路,遍歷每項的所有數據,比較字節符串長度,取最大長度。再用最大長度和標題長度比較,如果標題長就去標題長度,如果字符串長,就取字符串的。

js

//表格自適應方法function changeWidth(agstr){  var dg = $('#'+agstr);  dg.datagrid("loading");//顯示加載狀態$$$  var fn=function(){    var opts = dg.datagrid('getColumnFields');  //獲取表頭所有field    var data=dg.datagrid('getData');//獲取數據表格請求的數據    var role = data.rows;//數據表格請求的數據,即每行的數據      for (var i = 0; i <opts.length ;i++) { //循環每一列的數據內容        var field=opts[i];        var ro_width = 0;        if(field != ''){          var col = dg.datagrid('getColumnOption', field);          var col_title = col.title;          for(j=0;j<role.length;j++){            if(StringTolog(role[j][field])>ro_width){              ro_width = StringTolog(role[j][field]);//比較當前field列的每條數據長度,取最大值            }          }        if(ro_width<StringTolog(col_title)){//如果當前列數據長度小于當前列表頭長度則取表頭長度          ro_width =StringTolog(col_title);        }            var ro_length=ro_width*14+10;//14是頁面字體像素大小 10是單元格左右內邊距大小        $("td[field='"+field+"'] div").width(ro_length);//設置列寬樣式        dg.datagrid('lockColumn',field);//禁止數據表格改變列寬※※※      }    }      dg.datagrid("loaded");//隱藏加載狀態$$$  }  setTimeout(fn,0);}//字符串的粗略換算function StringTolog(Str){  if(Str==null){    return 0;  }  Str = Str.toString();//該方法將取到的數據轉為String類型  Str = Str.replace(//s+/g,'');//替換空格  //兩個字節為長度1,一個字節為長度0.5,計算字符串總長度  var newStr = (Str.length-Str.replace(/[/x00-/xff]+/g,'').length)/2          +Str.replace(/[/x00-/xff]+/g,'').length;  return newStr;}

調用以上兩個方法就可以實現列寬自適應。

但是發現執行此方法之后,表頭和表身的單元格寬度都已經固定寫死,如果此時觸發調整列寬大小事件,只能改變表頭寬度,不會改變表身列寬,所以自適應列寬后可以取消改變列寬大小的功能

封裝凍結列方法:

//凍結列,禁止調節列尺寸$("#id").datagrid('lockColumn',field值);$.extend($.fn.datagrid.methods, {  lockColumn: function(jq, field){    return jq.each(function(){      var p = $(this).datagrid('getPanel');  // 獲取數據表格面板      var cell = p.find('div.datagrid-header td[field=' + field + '] > div.datagrid-cell'); // 獲取數據表格監聽改變列寬事件的節點      cell.resizable({disabled:true}); // 禁止改變列寬    });  }});

在給每列設置寬度的時候調用該方法

dg.datagrid('lockColumn',field);

changeWidth 方法中的※※※位置

在重新定義列寬的時候如果數據量過大會導致頁面卡頓,可以再觸發該方法的開始位置調用datagrid的loading方法,結束時調用loaded方法,changeWidth 方法中的$$$位置

因為在觸發表格自適應方法后調用了datagrid的凍結列方法,所以再重新查詢數據的時候表頭不會重新渲染,只有表身會,,表身就會恢復默認寬度,就會出現表頭和表身對不齊的問題,表頭也不能改變寬度。

解決辦法,在數據表格數據加載成功時取消凍結列,清空之前計算的列寬


封裝取消凍結列方法

//取消凍結列,允許調節列尺寸$("#id").datagrid('unlockColumn',field值);$.extend($.fn.datagrid.methods, {  unlockColumn: function(jq, field){    return jq.each(function(){      var p = $(this).datagrid('getPanel');  // 獲取數據表格面板      var cell = p.find('div.datagrid-header td[field=' + field + '] > div.datagrid-cell'); // 獲取數據表格監聽改變列寬事件的節點      cell.resizable({disabled:false}); // 允許改變列寬    });  }});

數據加載成功觸發

onLoadSuccess: function (data) {      var opts = $(this).datagrid('getColumnFields');  //獲取表頭所有field       for(var i=0;i<opts.length;i++){         $(this).datagrid('unlockColumn',opts[i]);//允許調整列尺寸         $("tr.datagrid-header-row td[field='"+opts[i]+"'] div").width('');//清空表格自適應時計算的表頭寬度       }    },

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97视频com| 日本亚洲欧洲色| 日韩av大片在线| 91欧美精品午夜性色福利在线| 国产精品视频白浆免费视频| 欧美激情欧美狂野欧美精品| 国产午夜精品视频免费不卡69堂| 亚洲一级一级97网| 欧美与黑人午夜性猛交久久久| 国产精品九九九| 国产日韩欧美日韩| 国产999在线观看| 久久亚洲一区二区三区四区五区高| 久久亚洲一区二区三区四区五区高| 亚洲国内精品视频| 91精品国产九九九久久久亚洲| 亚洲综合在线小说| 日韩欧美国产视频| 欧美国产高跟鞋裸体秀xxxhd| 精品视频久久久久久久| 国产情人节一区| 亚洲精品www久久久久久广东| 97香蕉超级碰碰久久免费软件| 欧美精品在线免费| 亚洲美女黄色片| 国产精品欧美激情在线播放| 国产精品一区av| 美女性感视频久久久| 亚洲精品资源美女情侣酒店| 国语自产精品视频在线看抢先版图片| 97香蕉超级碰碰久久免费软件| 欧美日韩亚洲网| 26uuu日韩精品一区二区| 欧美综合国产精品久久丁香| 色无极影院亚洲| 国产精品一区二区三区久久久| 亚洲视频在线观看网站| 日韩成人在线播放| 日本成熟性欧美| 欧美性69xxxx肥| 久久中文字幕国产| 亚洲欧洲在线视频| 欧美成aaa人片在线观看蜜臀| 亚洲视频在线观看| 欧美激情综合色综合啪啪五月| 日韩av在线资源| 国产亚洲精品久久久久久| 91成人在线视频| 亚洲男人的天堂网站| 欧美精品国产精品日韩精品| 国产欧美在线看| 亚洲精品日韩欧美| 欧美韩日一区二区| 中文字幕在线国产精品| 性色av一区二区三区在线观看| 欧美性猛交xxxxx水多| 日韩免费看的电影电视剧大全| 亚洲欧美制服丝袜| 国产一区欧美二区三区| 亚洲国产精久久久久久久| 国产在线一区二区三区| 欧美麻豆久久久久久中文| 日韩欧美在线第一页| 欧美黄色片免费观看| 91色p视频在线| 欧美一级电影在线| 亚洲丁香婷深爱综合| 国产精品日韩一区| 国产成人福利视频| 日韩一区视频在线| 欧美激情一级二级| 91久久久久久久久久| 国产精品美女av| 欧美小视频在线观看| 伊人伊成久久人综合网站| 日韩中文在线观看| 亚洲国产三级网| 欧美黑人一区二区三区| 亚洲在线www| 国产在线精品一区免费香蕉| 国产精品99久久99久久久二8| 91成人天堂久久成人| 国产午夜精品全部视频在线播放| 青青草原一区二区| 一本一本久久a久久精品牛牛影视| 亚洲精品国产精品乱码不99按摩| 亚洲全黄一级网站| 日韩成人av网址| 国产亚洲精品成人av久久ww| 欧美一二三视频| 色多多国产成人永久免费网站| 欧洲亚洲女同hd| 亚洲天堂成人在线视频| 欧美视频精品一区| 欧美精品videossex性护士| 欧美成人免费全部观看天天性色| 国产精品久久久久免费a∨| 4p变态网欧美系列| 久久免费视频这里只有精品| 91产国在线观看动作片喷水| 久久久久久久一| 亚洲精品一区二三区不卡| 欧美富婆性猛交| 亚洲a一级视频| 亚洲а∨天堂久久精品9966| 亚洲国产成人精品女人久久久| 国产精品日韩专区| 91网站在线免费观看| 国产综合福利在线| 中文字幕自拍vr一区二区三区| 中日韩美女免费视频网站在线观看| 久久手机免费视频| 亲子乱一区二区三区电影| 亚洲国产女人aaa毛片在线| 日韩视频免费观看| 欧美另类极品videosbestfree| 最近更新的2019中文字幕| 精品magnet| 一本色道久久综合亚洲精品小说| 欧美成人精品h版在线观看| 亚洲成色777777在线观看影院| 性视频1819p久久| 亚洲男人7777| 色妞色视频一区二区三区四区| 97超级碰碰人国产在线观看| 色偷偷88888欧美精品久久久| 91精品国产综合久久香蕉922| 国产一区二区丝袜| 亚洲无线码在线一区观看| 国产精品91在线| 日韩成人在线播放| 国内自拍欧美激情| 欧美国产视频日韩| 日韩欧美亚洲国产一区| 亚洲欧美制服另类日韩| 97色在线观看免费视频| 2019精品视频| 国产精品久久久久久久久免费看| www国产精品com| 欧美精品一区在线播放| 亚洲激情电影中文字幕| 日韩一区二区三区国产| 国产精品极品美女粉嫩高清在线| 国产精品高潮视频| 日本视频久久久| 成人免费观看49www在线观看| 久久久伊人欧美| 中文日韩在线视频| 国产ts人妖一区二区三区| 亚洲精品天天看| 亚洲欧美日韩直播| 亚洲男人的天堂在线播放| 日韩有码在线播放| 日本久久中文字幕| 欧美电影在线观看完整版| www.久久久久久.com| 国产日韩在线免费| 97久久精品在线| 欧美亚洲在线播放| 国产亚洲欧洲在线| 国产丝袜一区视频在线观看| 国产福利视频一区| 亚洲视频在线观看| 日韩美女在线观看一区|