`

动态对ext grid添加列

阅读更多
var GenerGrid = { 
    data: null, 
    url_data: null,//Grid数据源 
    url_column: null,//列数据源 
    _width: null,//宽度 
    _height: null,//高度 
    _pagesize: null,//每页显示数据数 
    romanceContainer: null,//渲染Grid的容器 
    //hiddenColumnCount: null, //隐藏的列数,默认无隐藏列 
    enableChecked: false,//是否有CheckBox,默认为无。 
    grid: null, 
    ToHrefField: null,//链接列 
    ToHrefUrl: null,//链接地址 
    ToHref: function(value) { 
        return '<a href=" + GenerGrid.ToHrefUrl + " mce_href=" + GenerGrid.ToHrefUrl + ">' + value + '</a>'; 
    }, 
    GenerData: function() { 
//动态添加列,这是关键代码 
        var addColumn = function() { 
            this.fields = ''; 
            this.columns = ''; 
            this.addColumns = 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 + '",width:100,sortable:true}'; 
            }; 
        }; 
        //从服务器端获取列,然后动态添加到ColumnModel中 
        Ext.Ajax.request({ 
            url: GenerGrid.url_column, 
            success: function(response, option) { 
                if (response.responseText == "") { 
                    return; 
                } 
                GenerGrid.data = new addColumn(); 
                var res = Ext.util.JSON.decode(response.responseText); 
                for (var i = 0; i < res.length; i++) { 
                    for (var p in res[i]) { 
                        GenerGrid.data.addColumns(p, p); 
                    } 
                } 
                //动态生成GridPanel 
                makeGrid(); 
            }, 
            failure: function() { 
                Ext.Msg.alert("消息", "查询出错请查看语句是否配置正确"); 
            } 
        }); 
        //动态生成GridPanel 
        var makeGrid = function() { 
            var cm = new Ext.grid.ColumnModel(eval('([' + GenerGrid.data.columns + '])')); 
            cm.defaultSortable = false; 
            var fields = eval('([' + GenerGrid.data.fields + '])'); 
            var newStore = new Ext.data.Store({ 
                proxy: new Ext.data.HttpProxy({ 
                    url: GenerGrid.url_data 
                }), 
                reader: new Ext.data.JsonReader({ 
                    totalProperty: "totalPorperty", 
                    root: "result", 
                    fields: fields 
                }) 
            }); 
            newStore.load({ 
                params: { 
                    start: 1, 
                    limit: 16 
                } 
            }); 
            var pagingBar = new Ext.PagingToolbar({ 
                         displayInfo: true, 
                         emptyMsg: "没有数据显示", 
                         displayMsg: "显示从{0}条数据到{1}条数据,共{2}条数据", 
                         store: newStore, 
                         pageSize: GenerGrid._pagesize, 
                     items: ['-', { 
                                pressed: true, 
                                enableToggle: true, 
                                text: '导出Excel', 
                                cls: 'x-btn-text-icon details', 
                                icon: "../images/plugin.gif", 
                                toggleHandler: function(btn, pressed) { 
                                        var title = "数据下载"; 
                                        //如果是作为uri后面的参数传值,那就需要对字符进行编码                                 
                                        //如果是通过post的方式传数据,就不要做任何的编码                                 
                                        var cols = eval(cm); 
                                        var header = ""; 
                                        var dataIndex = ""; 
                                        for (var i = 0; i < cols.config.length; i++) { 
                                                header += cols.config[i].header + ","; 
                                                dataIndex += cols.config[i].dataIndex + ","; 
                                        } 
                                        var uri = "DataStore.aspx?param=ExpExcel" + "&filename=" + escape(title) + "&header=" + header + "&dataIndex=" + dataIndex; 
                                        window.location.href = uri; 
                                } 
                        }, 
                        '-'] 
            }); 
            var gridPanel = new Ext.grid.GridPanel({ 
                cm: cm, 
                id: "grid_panel", 
                loadMask: { 
                    msg: '正在加载数据,请稍侯. . . . . .' 
                }, 
                renderTo: GenerGrid.romanceContainer, 
                store: newStore, 
                frame: true, 
                border: true, 
                layout: "fit", 
                pageSize: GenerGrid._pagesize, 
                //width:GenerGrid._width, 
                height: GenerGrid._height, 
                viewConfig: { 
                    forceFit: true 
                }, 
                columnLines: false, 
                bbar: pagingBar 
            }); 
            GenerGrid.grid = gridPanel; 
        }; 
    } 

页面调用:
var gdate=function init(Container_id,sqlid) { 
            Ext.Msg.alert("提示消息",sqlid);//测试用的 
            GenerGrid.url_data = "DataStore.aspx?sqlid="+sqlid+"¶m=griddata"; //Grid数据源 
            GenerGrid.url_column = "DataStore.aspx?sqlid="+sqlid+"¶m=gridcolumn"; //列数据源 
            //GenerGrid._width =Ext.get(Container_id).getComputedWidth(); //宽度 
            GenerGrid._height = 360; //高度 
            GenerGrid.romanceContainer = Container_id; //渲染Grid的容器 
            GenerGrid._pagesize = 20; //每页显示数据数 
            GenerGrid.enableChecked = false; //是否有CheckBox,默认为无。 
            GenerGrid.ToHrefField = "TypeCName"; 
            GenerGrid.ToHrefUrl = "about:blank"; 
            GenerGrid.GenerData(); 
        } 
 
........ 
 
......gdate(dtime,_TypeID); 
分享到:
评论
1 楼 汽车城路 2013-08-29  
根据数据库里的字段来动态添加grid列,你实现了么?

相关推荐

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

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

    实现grid行 列的自定义添加和删除 绝对原创

    这两天项目需要,临时做了一个,没有封装,该grid可以实现列和行的自定义添加和删除,包括修改标题,以及列的右击添加事件。...双击列名可以对列名进行修改,右键列名可以选择左侧和右侧添加列以及对该列的删除。

    EXT Grid 导出Excel的另类实现,可以只导出Grid中显示的列

    此Demo不包含jar包,请自行添加 博文链接:https://yourgame.iteye.com/blog/228826

    Ext GridPanel 中实现加链接操作

    Ext GridPanel 中实现加链接操作 Ext GridPanel 中实现加链接操作 Ext GridPanel 中实现加链接操作

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

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

    Ext grid 添加右击菜单

    代码如下:grid . addListener ( ‘rowcontextmenu’ , rightClickFn ); // 右键菜单代码关键部分 //Menu 建立 var rightClick = new Ext . menu . Menu ({ id : ‘rightClickCont’ , // 在 HTML 文件中必须有个 ...

    ext.net-extjs

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

    Ext js 教程大全

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

    Ext 开发指南 学习资料

    2.4.2. 让grid支持按列排序 2.4.3. 中文排序是个大问题 2.5. 让单元格里显示红色的字,图片,按钮,你还能想到什么? 2.6. 更进一步,自动行号和多选checkbox 2.6.1. 自动行号 2.6.2. 全选checkbox的时间了,请允许...

    深入浅出Ext JS

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

    EXT2.0中文教程

    8.5.4. Ext对json的支持力度 8.5.5. 反向操作,ext把json变成字符串 8.6. 小声说说scope 8.7. 菜单和工具条 8.7.1. 至简至廉的菜单 8.7.2. 丰富一点儿的多级菜单 8.7.3. 单选多选,菜单里搞这套 8.7.4. 小把戏,定制...

    Ext Js权威指南(.zip.001

    10.1.7 锁定列的运行流程:ext.grid.lockable与ext.grid.lockingview / 516 10.2 使用grid / 520 10.2.1 最简单的grid / 520 10.2.2 列的配置项 / 521 10.2.3 自定义单元格的显示格式 / 523 10.2.4 通过列对象...

    Ext+JS高级程序设计.rar

    14.5 系统主页面与动态菜单 421 14.6 用户管理模块 427 14.7 角色管理模块 439 14.8 产品管理模块 447 14.9 进仓管理模块 450 14.10 出仓管理模块 460 14.11 库存统计模块 474 14.12 用户修改密码窗口 479 14.13 ...

    Ext js-2.0 带API

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

    Ext 学习中文手册

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

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

    8.5.4. Ext对json的支持力度 8.5.5. 反向操作,ext把json变成字符串 8.6. 小声说说scope 8.7. 菜单和工具条 8.7.1. 至简至廉的菜单 8.7.2. 丰富一点儿的多级菜单 8.7.3. 单选多选,菜单里搞这套 8.7.4. 小...

    给Extjs的GridPanel增加“合计”行

    NULL 博文链接:https://tonylian.iteye.com/blog/1735525

    EXT 中文帮助手册

    定义数据(Data Definition) 51 步骤二 列模型(Column Model) 52 Grid组件的简易分页 53 Grid数据 53 怎么做一个分页的Grid 54 分页栏Toolbar 55 EXT Menu组件 55 创建简易菜单 56 各种...

    EXT简体中文参考手册(PDF&CHM电子档)

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

    EXTJS 3.0中文版文档+实例

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

Global site tag (gtag.js) - Google Analytics