国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

ExtJS4如何自動生成控制grid的列顯示、隱藏的checkbox

2024-05-06 16:04:56
字體:
來源:轉載
供稿:網友
需要做一個控制grid列顯示的checkboxgroup,雖然EXTJS4中的gridpanel自帶列表可以來控制列的顯示隱藏,需要的朋友可以參考下

由于某種原因,需要做一個控制grid列顯示的checkboxgroup,雖然EXTJS4中的gridpanel自帶列表可以來控制列的顯示隱藏,但是有這樣的需求(需要一目了然)

下面先上圖

ExtJS4如何自動生成控制grid的列顯示、隱藏的checkbox

 

接著前幾天做的工作,今天上午完成了定制字段,思路是在上面的普通查詢或者高級查詢結束以后,獲得了列的fields,columns等信息,然后交給一個處理函數 makeCustomMadePanel,該函數用來生成checkboxgroup,生成的時候給它加上一個事件,原本以為checkbox會有類似于check的事件,結果API看了看貌似只有個change事件可以用,MD。。

下面貼下自己寫的 makeCustomMadePanel函數。。用來根據grid的列自動生成checkboxgroup(整個grid的標頭內容等信息均從后臺得到,不管后臺發來一個什么表,都能生成一個checkboxgroup來控制列的隱藏顯示)

參數分別是gridpanel在reconfigure的時候用到的fields和columns,期中的var t=grid_a.columnManager.headerCt.items.get(th.itemId);是關鍵。。這句用來獲得grid_a的列信息。。貌似在api中查不到。網上找了幾中方法都不適合。又不想給每個列一個ID。這是在stackoverflow.com/上找到的。。

復制代碼 代碼如下:


function makeCustomMadePanel(fields,cl)
{

var x=cusMadePanel.getComponent('custom');
//console.log(cusMadePanel.getComponent('custom'));
for(var i=0;i<fields.length;i++)
{
x.add(
{
xtype : 'checkboxfield',
boxLabel : cl[i].header,
inputValue : fields[i].name,
checked:true,
itemId:i,
name : 'custom',
listeners : {
change : function(th, value, oldValue,eop) {

var t=grid_a.columnManager.headerCt.items.get(th.itemId);
if(t.isVisible()){

t.setVisible(false);
}
else{
t.setVisible(true);
}
//grid_a.columns[3].setVisible(false);
}}

}
);
}
}


在給出customMadePanel

復制代碼 代碼如下:


Ext.define('customMadePanel', {
extend : 'Ext.form.Panel',
title : '定制字段',
collapsible : true,
items : [ {
itemId:'custom',

xtype : 'checkboxgroup',

fieldLabel : '選擇字段',
columns : 6,
items : []


}]
//collapsed:true,
});
var cusMadePanel=new customMadePanel();


我這種做法的不足也很明顯,makeCustomMadePanel函數中的循環生成checkbox組件太耗時了,38個組件足足花了好幾秒。。用戶體驗肯定不好。。

并且目前是在每次查詢完之后都根據查詢的結果生成一遍。。。我再想想好的解決辦法


今天對makeCustomMadePanel做了優化,生成組件的速度與先前相比提升非常明顯!

復制代碼 代碼如下:


function makeCustomMadePanel(fields,cl)

cusMade=1;
var x=cusMadePanel.getComponent('custom');
//console.log(cusMadePanel.getComponent('custom'));
var fie=[];
for(var i=0;i<fields.length;i++)
{
//x.add(
var temp=
{
xtype : 'checkboxfield',
boxLabel : cl[i].header,
//inputValue : fields[i].name,
checked:true,
itemId:i,
name : 'custom',
listeners : {
change : function(th, value, oldValue,eop) {

var t=grid_a.columnManager.headerCt.items.get(th.itemId);
//console.log(t.isVisible());
//console.log('break');
if(t.isVisible()){

t.setVisible(false);
}
else{
t.setVisible(true);
}
//console.log(t.isVisible());
//var t1=grid_a.columnManager.headerCt.items.get(th.itemId);
//console.log(t1);
//grid_a.columns[3].setVisible(false);
}}

};
//console.log(temp);
fie.push(temp);
}
//console.log(fie);
x.add(fie);


思路就是先循環組好需要生成的組件對象,然后一次add,每一次add的開銷非常大,變為一次速度真的提升了很多很多~
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 潢川县| 治县。| 漳州市| 宜城市| 喀喇| 濮阳市| 聂拉木县| 承德市| 公安县| 新建县| 金寨县| 邹平县| 汤原县| 普洱| 湘西| 松溪县| 宁强县| 和硕县| 舞钢市| 皋兰县| 交城县| 正阳县| 高清| 新兴县| 阿勒泰市| 齐齐哈尔市| 泰和县| 三门县| 开化县| 沈阳市| 开原市| 太原市| 石楼县| 天峨县| 鄱阳县| 威远县| 迁西县| 满洲里市| 怀远县| 舒兰市| 西安市|