摘要:項目初期在加載數據表格的時候為了提高表格數據渲染速度,設置了默認寬度。現需求需要加一個表格自適應的功能,觸發改功能,改變列寬度,但是不重新渲染表格,不發生數據請求。設計思路,遍歷每項的所有數據,比較字節符串長度,取最大長度。
項目初期在加載數據表格的時候為了提高表格數據渲染速度,設置了默認寬度。
現需求需要加一個表格自適應的功能,觸發改功能,改變列寬度,但是不重新渲染表格,不發生數據請求。
設計思路,遍歷每項的所有數據,比較字節符串長度,取最大長度。再用最大長度和標題長度比較,如果標題長就去標題長度,如果字符串長,就取字符串的。
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; iro_width){ ro_width = StringTolog(role[j][field]);//比較當前field列的每條數據長度,取最大值 } } if(ro_width 調用以上兩個方法就可以實現列寬自適應。
但是發現執行此方法之后,表頭和表身的單元格寬度都已經固定寫死,如果此時觸發調整列寬大小事件,只能改變表頭寬度,不會改變表身列寬,所以自適應列寬后可以取消改變列寬大小的功能
封裝凍結列方法://凍結列,禁止調節列尺寸$("#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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105755.html
摘要:官方的數據表格屬性中提供了屬性其作用是設置為,則把數據顯示在一行里。設置為可提高加載性能。 官方的數據表格屬性中提供了nowrap屬性其作用是:設置為 true,則把數據顯示在一行里。設置為 true 可提高加載性能。 默認為true在設置數據表格屬性時將nowrap屬性設置為false時,并且設置表格的寬度,當單元格內數據內容超過寬度時就會自動換行 { field : khm...
摘要:什么是是一種基于和的用戶界面插件集合。為創建現代化,互動,應用程序,提供必要的功能。是個完美支持網頁的完整框架。很簡單但功能強大的。返回則取消該動作。該函數有下列參數要傳遞到遠程服務器的參數對象。當檢索數據成功時調用的回調函數。 什么是easyUI easyui是一種基于jQuery、Angular.、Vue和React的用戶界面插件集合。easyui為創建現代化,互動,JavaScr...
摘要:什么是是一種基于和的用戶界面插件集合。為創建現代化,互動,應用程序,提供必要的功能。是個完美支持網頁的完整框架。很簡單但功能強大的。返回則取消該動作。該函數有下列參數要傳遞到遠程服務器的參數對象。當檢索數據成功時調用的回調函數。 什么是easyUI easyui是一種基于jQuery、Angular.、Vue和React的用戶界面插件集合。easyui為創建現代化,互動,JavaScr...
摘要:什么是是一種基于和的用戶界面插件集合。為創建現代化,互動,應用程序,提供必要的功能。是個完美支持網頁的完整框架。很簡單但功能強大的。返回則取消該動作。該函數有下列參數要傳遞到遠程服務器的參數對象。當檢索數據成功時調用的回調函數。 什么是easyUI easyui是一種基于jQuery、Angular.、Vue和React的用戶界面插件集合。easyui為創建現代化,互動,JavaScr...
摘要:實現表頭固定,垂直滾動準備工作獲取頁面可是區域高度屏幕旋轉觸發事件正常方向或者屏幕旋轉豎屏屏幕順時針旋轉或者逆時針旋轉橫屏方法一兩個思路第一個放表頭,第二個方內容。 實現表頭固定,tbody垂直滾動準備工作: 獲取頁面可是區域高度 function setIframeHeight() { var screenHeight = document.documentElement.c...
閱讀 1349·2021-09-28 09:43
閱讀 4115·2021-09-04 16:41
閱讀 1917·2019-08-30 15:44
閱讀 3727·2019-08-30 15:43
閱讀 775·2019-08-30 14:21
閱讀 2037·2019-08-30 11:00
閱讀 3319·2019-08-29 16:20
閱讀 1923·2019-08-29 14:21