ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox_extjs

由于某种原因,需要做一个控制grid列显示的checkboxgroup,虽然EXTJS4中的gridpanel自带列表可以来控制列的显示隐藏,但是有这样的需求(需要一目了然)

下面先上图

 

接着前几天做的工作,今天上午完成了定制字段,思路是在上面的普通查询或者高级查询结束以后,获得了列的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/上找到的。。http://stackoverflow.com/questions/20791685/extjs-4-how-do-i-hide-show-grid-columns-on-the-fly

复制代码 代码如下:

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的开销非常大,变为一次速度真的提升了很多很多~

时间: 2024-10-04 02:17:16

ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox_extjs的相关文章

Reporting报表图表自动生成xml用ReportViewer不显示图表图形

问题描述 我自己写了个生成Reporting报表xml的类,生成表格没问题,但是生成图表就没有图形出来,图表的标题可以显示,就一张白色的图片,我将生成报表的xml复制到rdlc文件用本地加载的方法生成图表成功,大家帮忙看看! 解决方案 解决方案二:该回复于2011-01-14 09:23:31被版主删除解决方案三:LZ发出来看看呀我也在做这块呀,也可以实现,在线设计,并生成RDLC

使用脚本控制网页Table的显示隐藏(全代码)

脚本|控制|网页|显示 [需求]如果大家登录过我傲:http://www.woall.com新浪博客等就会发现可以点击栏目标题,就会发现栏目可以展开和收起,非常好用!其实这个功能实现起来很简单.重点就是要找到要隐藏的Table行,对它的display属性进行控制. 强烈建议大家登录:http://www.woall.com亲身体验一下! [另]网址怎么加链接啊??? [源码]使用方法:把文件考下来,保存为htm类型的文件即可!<!DOCTYPE html PUBLIC "-//W3C//D

使用JavaScript脚本控制网页Table的显示隐藏

javascript|脚本|控制|网页|显示 [需求]如果大家登录过我傲:http://www.woall.com新浪博客等就会发现可以点击栏目标题,就会发现栏目可以展开和收起,非常好用!其实这个功能实现起来很简单.重点就是要找到要隐藏的Table行,对它的display属性进行控制. 强烈建议大家登录:http://www.woall.com亲身体验一下! [另]网址怎么加链接啊??? [源码]使用方法:把文件考下来,保存为htm类型的文件即可! <!DOCTYPE html PUBLIC &qu

使用脚本控制网页Table的显示隐藏(全代码)_AX_javascript技巧

你点我啊!! AXzhz制作

如何将Word自动生成的目录的页码打印成统一格式

我把正文的页码设置成 -1- 的格式了,然后设置好大纲级别后,就自动生成目录.目录里显示的也是---------1-的格式.好,我就选中页码-1-,把它设置成1的格式了.然后再打印,结果打印的结果还是-1-的格式,而且点打印预览也还是-1-的格式.我看了一下,目录------后面的页码的格式都是和--------之前的字的格式一样的.我想把目录的字体和大小设成不同的,但是页码就跟着不同了,很不美观. PS:以上这些问题在设置的时候都可以解决,但是设置好了之后,打印的时候就会回到设置前的状态了,怎

js控制TR的显示隐藏_javascript技巧

下文分享的一段代码:选择是的按钮就显示身高和体重的文本框的代码.注意:ready方法必须要引用jquery的库. 1.html Code <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <style type="text/css&

javascript 控制 html元素 显示/隐藏实现代码_javascript技巧

1.编写js函数 <script type="text/javascript"> function display(y){$(y).style.display=($(y).style.display=="none")?"":"none";} function $(s){return document.getElementById(s);} </script> 2. 要显示/隐藏的html元素加上 id

如何让PowerDesigner支持自动生成含SQL Server 2000的表和列注释的角本

server 翁 彦 PowerDesigner是Sybase公司著名的产品,我从16-bit的windows开始,就接触并使用这个工具,应该说是有很深的感情.PowerDesigner是DBA和软件架构师设计的利器,随着版本的不断升级,PowerDesigner提供了更多更强大的功能.仅以本篇为开始,向大家介绍一些PowerDesinger中的使用技巧,帮助大家更好地更有效率地使用这个CASE工具. 问题的提出 我曾经在很多网上看到有朋友问起,在PowerDesigner的Physical M

ExtJS4 动态生成的grid导出为excel示例_extjs

搜索了蛮久,找到一些例子,因为我是初学者的缘故大多不知道怎么使用.. 研究了一下那个源码,搞到现在终于实现了基本的下载.解决了一个表格不能重复下载的小BUG,一个使用grid初始化发生的BUG 下面记录一下步骤.说不定下次还有用 1.下载需要用到js代码,我已经上传  2.在你的html文件中加入引用,路径问题自己 注意下,下面是我的路径 复制代码 代码如下: <script type="text/javascript" src="../export/export-al