最近項目中使用了easyUI這個js展現層,說實話,展示效果還算不錯,使用上也比較方便,但是讓我頭疼的就是datagrid的這個控件。
它的使用起始非常簡單方便,而且提供的功能也比較全面,但是美中不足的就是,該控件在加載比較大的數據量時,渲染速度有點難以承受。
網上找了相關的解決方案,無外乎就是使用view。
view這個東西說實話的確能起到改善datagrid的加載速度的問題,但是缺陷也比較多,網上有該缺陷描述,本人不在此說了。
還有一個提到的方案,就是修改
jquery-easyui-min-1.3.6.js
第9272行
將循環內的代碼注釋掉
即:
var tr1 = $(trs1[i]);
var tr2 = $(trs2[i]);
tr1.css("height", "");
tr2.css("height", "");
var _530 = Math.max(tr1.height(), tr2.height());
tr1.css("height", _530);
tr2.css("height", _530);
這個方法我已經測試過,無效。
以下為個人觀點:
最終發現,datagrid的列有一個屬性,[width],對應的描述是
屬性名稱 | 屬性值類型 | 描述 | 默認值 |
---|---|---|---|
width | number | 列的寬度。如果沒有定義,寬度將自動擴充以適應其內容。 | undefined |
如果列的width屬性沒有設置數值,那么就會自動計算寬度數值,這可是一個循環遍歷的過程,要計算每一個列的寬度,並且還需要在所有數據行中取最大值來作為最終該列寬度數值
問題原因找到了,於是乎在設置datagrid列表的列時,將每列width屬性進行數值設定,再次加載數據,以前加載600條數據大概需要140秒,
現在加載600條數據21秒,雖然還是非常慢,但是找到了一個導致datagrid加載速度緩慢的原因。不知道對大家有幫助沒。