`

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动态列

    EXT动态列是一种在EXT JS框架下实现表格列动态生成的技术,它允许我们在运行时根据需求创建或修改表格列。EXT JS是一个强大的JavaScript库,专用于构建富客户端Web应用程序,其组件化的设计使得创建复杂的用户界面变...

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

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

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

    在本教程中,我们将深入探讨如何通过EXT Grid的插件机制实现动态地在代码中添加或删除表格列,这正是“Ext grid AddRemovecolumn plugin”的核心功能。 首先,让我们理解EXT Grid的基本结构。EXT Grid由多个组件...

    EXT4.3实现动态表单全动态

    - **动态列**:EXT4.3的`Ext.grid.Panel`允许在运行时动态添加、删除和调整列宽。开发者可以通过`columns`配置项或者`addColumn`、`removeColumn`方法实现。 - **数据源绑定**:grid可以与各种数据源(如Store)...

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

    当用户滚动时,BufferView会动态加载和卸载数据,使得大规模数据的展示变得流畅。 接下来,"多表头"是另一个增强表格功能的关键特性。在Ext Grid中,多表头允许用户创建复杂的表头结构,以更好地组织和呈现数据。...

    ext grid 动态扩展

    本篇将详细介绍如何实现 `Ext Grid` 的列动态添加。 1. **创建 ColumnModel** `Ext.grid.ColumnModel` 是用于定义 `GridPanel` 列结构的类。在创建 `ColumnModel` 时,我们需要提供一个包含列信息的 JavaScript ...

    EXT动态新增一行

    6. **性能优化**:考虑到大量动态添加组件可能会影响性能,可以考虑使用延迟加载(Lazy Loading)或者虚拟滚动(Virtual Scrolling)技术,只在可视区域内渲染必要的行。 7. **用户交互**:为了提供良好的用户体验...

    Ext2.0锁定列示例

    在本文中,我们将深入探讨如何在Ext2.0框架中实现Grid列的锁定功能,这是一种在数据展示时保持关键列固定不动,以便用户更轻松地浏览和操作表格数据的技术。Ext是一个强大的JavaScript库,用于构建复杂的Web应用程序...

    Ext动态树中文API

    Ext动态树是基于Ext JS库的一个组件,用于创建交互式的、可动态更新的树形结构。这个组件在Web应用程序中非常有用,特别是在需要展示层级数据或者进行导航菜单设计时。Ext中文API为开发者提供了详细的使用指南和参考...

    Ext 3.4 多表头 列锁定

    在这个特定的场景中,我们关注的是"多表头"和"列锁定"功能,这两者都是Ext JS表格视图中的高级特性。 多表头(Multi-Level Headers)允许在表格中创建层次化的列标题,这在处理复杂数据时非常有用。通过多表头,...

    Ext3.4.0复杂(多行)表头+锁定多列例子

    "Ext3.4.0复杂(多行)表头+锁定多列例子"这个标题涉及到的是一个JavaScript库——Ext JS的一个高级功能应用。Ext JS是一个流行的前端框架,用于构建富互联网应用程序(RIA),它提供了一套完整的组件化开发工具,包括...

    LigerGrid动态改变加载字段列名

    根据提供的文件信息,本文将详细解释如何在LigerGrid中实现动态改变加载字段列名的功能。这涉及到对LigerGrid的基础使用、参数设置以及通过JavaScript编程实现动态更改的方法。 ### LigerGrid概述 LigerGrid是一款...

    EXT复杂表头+锁定列例子

    5. 渲染Grid:将配置对象传递给`Ext.create`方法,生成Grid实例并添加到DOM中。 在压缩包中的文件“复杂表头+锁定列”可能包含了示例代码、HTML模板和必要的资源,供开发者参考和学习。为了进一步了解和实践这个...

    ext.net 动态创建gridpanel

    在这个场景中,我们将深入探讨如何使用Ext.NET代码动态创建GridPanel,并在各种窗口中灵活展示。 1. **动态创建GridPanel**: 在Ext.NET中,动态创建GridPanel意味着在运行时根据需要生成组件。这通常涉及到在...

    EXT 通用动态Grid封装js

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

    ExtJs动态grid的生成

    例如,如果新数据包含新的列,你可以在加载完成后动态添加这些列。 5. **自定义工具栏和功能** - Grid的顶部通常包含一个工具栏,可以动态添加按钮或其他UI元素,提供搜索、排序或过滤等功能。这些功能可以通过`...

    Ext2.2动态生成ColumnModel

    通过阅读和分析博文链接(已提供但无法直接访问),开发者可以学习如何在实际项目中实现这个功能,例如,如何根据数据结构动态创建列,如何处理动态添加或删除列的情况,以及如何处理排序和过滤等交互功能。...

    ext grid网格控件实例

    4. **动态从服务器获取数据**:在大型应用中,通常会采用动态加载数据的方式,这涉及到EXT Grid的分页功能。通过`Ext.grid.Panel`的`plugins`属性启用分页插件`Ext.grid.plugin.PagingToolbar`,并与`store`的`proxy...

    Ext GridPanel 中实现加链接操作

    在了解如何添加链接之前,我们首先需要理解 Ext GridPanel 的基本结构。Ext GridPanel 主要有以下几个组成部分: 1. **Store**:存储数据的模型。 2. **Column Model**:定义列的信息。 3. **View**:显示数据的...

    EXT2.0 GRID 示例

    还可以添加自定义的列渲染器来改变数据显示样式。 3. **行编辑**:EXT GRID支持行内编辑,用户可以直接在表格中修改数据,这需要结合EditorGridPanel和Form Field组件来实现。 4. **排序和过滤**:GRID可以实现列...

Global site tag (gtag.js) - Google Analytics