`

Ext动态列加载

阅读更多
	////////////////////////////
	  //声明grid
	var Dat;
    //表字段:ID CName EName Sex Address Mobile
    
    //声明全局变量session_Column作为当前的列集,默认是2列
   var session_column = "pno,pname,pnum,";
    //封装grid
    function DataGrid(){
        //默认2列
        this.fields = '{name:"pno"},{name:"pname"},{name:"pnum"}';
		this.columns = '{header:"组合",dataIndex:"pno",hidden:false,sortable:true},'
			 			+'{header:"名称",dataIndex:"pname",sortable:true},'
	           	 +'{header:"市值",dataIndex:"pnum",sortable:true}';
        //动态增加列
        this.addField=function(name,caption)
        {
            if(this.fields.length > 0){
                this.fields += ',';
            }
            if(this.columns.length > 0){
                this.columns += ',';
            } 
            this.fields += '{name:"' + name + '"}';
            this.columns += '{header:"' + caption + '",dataIndex:"' + name + '",sortable:true}';
        };
        //动态删除列
        this.removeField=function(name,caption)
        {
            if(this.fields.length > 0&&this.columns.length > 0)
            {                
                var d_field = ',{name:"' + name + '"}';
                var index = this.fields.indexOf(d_field);
                if(index>=0)
                {
                   this.fields = this.fields.replace(d_field,"");
                }                
                var d_column = ',{header:"' + caption + '",dataIndex:"' + name + '",sortable:true}';
                var index2 = this.columns.indexOf(d_column);
                if(index2>=0)
                {                
                    this.columns =  this.columns.replace(d_column,"");  
                }
            }
        };
        //绑定存储器
        this.ds = new Ext.data.Store
        ({	autoLoad :false,
             proxy:new Ext.data.HttpProxy({url:"griddata.action"}),
             reader:new Ext.data.JsonReader({totalProperty:"results",root:"items"}, Ext.data.Record.create(eval('(['+this.fields+'])')))
        });
      //清空字段,恢复初始值
		   this.clearFields= function(){
		       this.fields = '{name:"pno"},{name:"pname"},{name:"pnum"}';
				     this.columns = '{header:"组合",dataIndex:"pno",hidden:false,sortable:true},' +
				                 '{header:"名称",dataIndex:"pname",sortable:true},'
				                 +'{header:"市值",dataIndex:"pnum",sortable:true}';
		   };
        //实现动态增加或者删除列  
        this.RefreshDataSource = function(u){//动态添加列
            var cm1 = eval('([' + this.columns + '])');
            //默认可以对字段排序
            cm1.defaultSortable = true;
            //重新绑定数据集
            var newStore = new Ext.data.Store
            ({		autoLoad :false,
                    proxy:new Ext.data.HttpProxy({url: u}),
                    reader:new Ext.data.JsonReader({totalProperty:"results",root:"items",id :"id"},Ext.data.Record.create(eval('([' + this.fields + '])')))
            }); 
            //重新绑定grid
            this.grid.reconfigure(newStore, new Ext.grid.ColumnModel(cm1));
            //重新绑定分页工具栏
            this.pagingBar.bind(newStore);
            //重新加载数据集
            newStore.load({params:{start:0,limit:10}}); 
        }
        
        this.ds.load();
        this.pagingBar = new Ext.PagingToolbar
        ({
            displayInfo:true,
            emptyMsg:"没有数据显示",
            displayMsg:"显示从{0}条数据到{1}条数据,共{2}条数据",
            store:this.ds,
            pageSize:10
        });
        
        this.grid = new Ext.grid.GridPanel
        ({
            cm:new Ext.grid.ColumnModel(eval('([' + this.columns + '])')),
            store:this.ds,
            id:"pgrid",
            title:"组合信息", 
            loadMask:true,           
            layout:"fit",          
            autoWidth:true,
            stripeRows :true,
            frame :false,
            viewConfig : {
				autoFill :true,
				enableRowBody :true
			},
           // autoHeight:false,
          	height:440,
            autoScroll:true,           
            bbar:this.pagingBar,
            listeners:{
				  'cellclick':function(grid,rowIndex,columnIndex,e){
				  		var record = grid.getStore().getAt(rowIndex);
				  		Ext.getCmp('text1').setValue(rowIndex);
		      		}
			},
            renderTo:grid1
        });  
    }
    //动态增加列
    function AddColumn(columnName,caption){
        if(session_column.indexOf(columnName)>0)
        {
           // Ext.Msg.alert("友好提示","["+caption+"]字段已经添加过了,不能够重复!当然你想重复,要改源代码哦!");
            return;
        }
        session_column +=columnName;
        Dat.addField(columnName,caption);
    }
    //刷新页面恢复初始加载状态
    function Refresh(){
          var url = "griddata.action";
          Dat.clearFields();//清空字段,恢复初始值
          session_column = "pno,pname,pnum,";
          //Dat.RefreshDataSource(url);
    }
    
   Dat = new DataGrid();

/////调用发出请求
AddColumn("tmgamma","伽玛(T-M三因素)");
		  	url = "griddata.action?type=4&begin="+begin+"&end="+end+"&pno="+pno;
		    Dat.RefreshDataSource(url);
</script>
分享到:
评论

相关推荐

    Ext grid 动态添加字段、列扩展

    Ext grid 动态添加字段、列扩展, 如何动态添加或者删除一个grid的列

    Ext扩展控件-----可以在代码中动态为表格增加一列或者删除一列

    可以在代码中动态为表格增加一列或者删除一列 ext gird AddRemovecolumn plugin

    Ext表格列锁定+多表头插件

    Ext3.4 将BufferView添加到LockingGridView中, 修改GroupHeaderPlugin使其可用于LockingGridView 内有使用示例

    LigerGrid动态改变加载字段列名

    LigerGrid动态加载字段列名。

    EXT 通用动态Grid封装js

    对ext Grid进行了封装,动态加载数据源,动态生成列

    EXT2.0中文教程

    TabPanel使用autoLoad加载的页面中的js脚本没有执行 B. 修改日志 C. 后记 C.1. 2007年12月5日,迷茫阶段 C.1.1. 仇恨 C.1.2. 反省 C.2. 关于ext与dwr整合部分的讨论 C.3. 怎么看文档附件里的范例 D. 贡献者列表 ...

    Ext js 教程大全

    自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,这些也算可以想到的功能。 再加上可编辑grid,添加新行,删除一或多行,提示脏数据,推拽改变...

    ext.net-extjs

    自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,这些也算可以想到的功能。 再加上可编辑grid,添加新行,删除一或多行,提示多行数据,拖拽改变...

    Ext 开发指南 学习资料

    动态为ds添加参数baseParams A.10. 有关tree的一些小问题 A.10.1. 如何选中树中的某个节点 A.10.2. 刷新树的所有节点 A.10.3. 如果取得json中自定义的属性 A.11. 如何使用input type="image" A.12. Ext.Window中的...

    Ext+JS高级程序设计.rar

    6.3.4 在form中使用Ext.Direct加载数据 185 6.3.5 在form中使用Ext.Direct提交数据 187 6.3.6 使用polling方式进行轮询 189 6.4 本章小结 191 第7章 Store 192 7.1 Store的结构 192 7.2 Ext.data.Field 197 7.3 Ext....

    postgres_ext, 添加对缺少的PostgreSQL数据类型的支持.zip

    postgres_ext, 添加对缺少的PostgreSQL数据类型的支持 PostgresExt为ActiveRecord添加了缺少的原生PostgreSQL数据类型,并方便地查询了ActiveRecord和Arel的扩展扩展( Rails 4 ) 查找帮助?如果是一个 Bug ,请在...

    Ext Js权威指南(.zip.001

    4.4.4 实现动态加载:ext.loader / 151 4.4.5 管理类的类:ext.classmanager / 159 4.4.6 类创建的总结 / 161 4.5 动态加载的路径设置 / 163 4.6 综合实例:页面计算器 / 165 4.7 本章小结 / 169 第5章 ext ...

    EXT教程EXT用大量的实例演示Ext实例

    TabPanel使用autoLoad加载的页面中的js脚本没有执行 B. 修改日志 C. 后记 C.1. 2007年12月5日,迷茫阶段 C.1.1. 仇恨 C.1.2. 反省 C.2. 关于ext与dwr整合部分的讨论 C.3. 怎么看文档附件里的范例 D. 贡献者...

    深入浅出Ext JS

     自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,这些也算可以想到的功能。  再加上可编辑grid,添加新行,删除一或多行,提示脏数据,推拽...

    Ext 学习中文手册

    动态添加菜单按钮到Toolbar 61 更方便的是 61 下一步是 62 模板(Templates)起步 62 第一步 您的HTML模板 62 第二步,将数据加入到模板中 62 下一步 63 学习利用模板(Templates)的格式化功能 63 正式开始 63 下...

    运用EXT技术编写的班级通讯录

    运用EXT技术编写的班级通讯录,...通讯录界面是用EXT默认皮肤风格完成,清新自然,无刷新添加、删除通讯录数据,每列可拖动宽度,并且可以更换显示位置,程序附有数据库脚本文件,比较适合学习在PHP中使用EXT技术。

    Ext常用功能开发总结

    表格的加载与查询的实现 8 表格的单击事件 8 包装表格中的某列 9 可编辑表格的实现 10 对话框的使用 12 弹出窗口的使用 12 可伸缩的panel 14 EditGridPanel的构成、数据提交及后台接收 18 Ajax代码参考 21 Button的...

    EXT 中文帮助手册

    58 练一练 60 动态添加菜单按钮到Toolbar 61 更方便的是 61 下一步是 62 模板(Templates)起步 62 第一步 您的HTML模板 62 第二步,将数据加入到模板中 62 下一步 63 学习利用模板...

    Ext js-2.0 带API

     自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,这些也算可以想到的功能。  再加上可编辑grid,添加新行,删除一或多行,提示脏数据,推拽...

    Ext grid 添加右击菜单

    // 右键菜单代码关键部分 //Menu 建立 var rightClick = new Ext . menu . Menu ({ id : ‘rightClickCont’ , // 在 HTML 文件中必须有个 rightClickCont 的 DIV 元素 items : [{ id : ‘rMenu1’ , handler : ...

Global site tag (gtag.js) - Google Analytics