`

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

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

    “AddRemovecolumn”插件是EXT Grid的一个自定义扩展,它允许用户在运行时动态地向Grid添加或移除列。这在需要根据业务需求或者用户交互动态改变列结构的场景下非常有用,例如在数据分析、报表生成或者配置式界面...

    ext grid 动态扩展

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

    ext grid 合并行

    1. **理解EXT Grid的结构**:EXT Grid由一系列的行(Row)和列(Column)组成,每一行包含多个单元格(Cell)。行合并涉及将多个行的单元格合并为一个大单元格。 2. **自定义Renderer**:首先,我们需要创建一个...

    一个很好的EXTGRID实例

    2. **列配置**:EXTGRID允许自定义列,包括列宽、标题、对齐方式、可排序性等,可以展示不同类型的数据,如文本、数字、日期等。 3. **分页**:EXTGRID支持分页功能,用户可以轻松浏览大量数据,提高性能。 4. **...

    ext动态列

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

    Ext grid 简单实例

    3. **配置Column Model**: 创建一个Ext.grid.ColumnModel,定义每列的属性,如text(列标题)、dataIndex(与Model字段关联)和width。 4. **创建Grid Panel**: 创建一个Ext.grid.Panel实例,将Store、Model和...

    EXT grid导出EXCEL

    EXT Grid是一款基于JavaScript的强大的...在实际开发中,EXT Grid导出Excel的功能可以根据项目需求进行定制,例如添加自定义样式、合并单元格、设置条件格式等。理解上述步骤后,你可以根据具体需求进行扩展和优化。

    ext grid数据绑定

    在EXT JS这个强大的JavaScript框架中,EXT Grid是一个非常重要的组件,用于展示大量结构化数据,并提供了丰富的交互功能。本文将深入探讨"EXT Grid数据绑定"这一主题,包括数据查找和如何将查找结果重新填充到Grid中...

    JSP中使用EXT实现grid table

    7. 如果需要,添加Paging Toolbar:为Grid添加分页功能,与Store绑定。 在描述中提到的"Ext_Grid"可能是一个包含示例代码或配置文件的压缩包,帮助开发者快速搭建一个EXT Grid。这个压缩包可能包括了JSP页面、EXT ...

    EXT2.0 GRID 示例

    EXT2.0 GRID 示例是一个基于EXT JavaScript库的高级数据展示和操作组件的实例。EXT是一个强大的前端开发框架,尤其在创建交互式Web应用程序方面表现出色。EXT2.0是EXT库的一个早期版本,它提供了丰富的用户界面组件...

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

    这个插件主要用于改进Ext Grid的用户体验,特别是处理大量数据时,通过列锁定和多表头功能,使得用户能够更有效地浏览和操作数据。 首先,"列锁定"是Ext Grid中一个非常实用的功能,特别是在显示宽广、多列的数据表...

    EXT grid中根据每一行的状态列内容来让当前行显示不同的背景颜色

    通过以上步骤,我们便能在EXT Grid中实现根据状态列内容动态改变行的背景颜色。这种方法不仅适用于简单的状态判断,还可以扩展到更复杂的逻辑,如基于多种条件的背景颜色变化,或者使用自定义图标等。EXT Grid的强大...

    解决Ext Grid中文排序问题

    通过这种方式,我们可以确保Ext Grid中的中文列按照预期的中文排序方式进行排序,提供更好的用户体验。需要注意的是,这种方法仅适用于本地排序,如果数据是从服务器端获取并进行排序的(remoteSort设置为true),则...

    extgrid导出excel

    "extgrid导出excel"这个主题是关于如何将ExtJS中的数据网格(Ext Grid)的数据导出到Excel文件中,方便用户进行数据管理和分析。 首先,让我们深入了解一下Ext Grid。Ext Grid是一种用于展示和操作大量结构化数据的...

    Ext4 grid打印

    Ext4 Grid提供了丰富的功能,包括数据排序、筛选、分页以及列的动态调整等。在这个场景下,"grid打印"指的是将Grid中的数据导出或者可视化地呈现到纸上,以便于用户进行查阅或存档。这通常涉及到打印预览,确保数据...

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

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

    ExtJs动态grid的生成

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

    ext grid 导出excel 代码实例

    1. **创建EXT Grid**:首先,你需要创建一个EXT Grid实例,定义列模型、数据源、以及任何其他必要的配置项。例如,你可以使用`Ext.create('Ext.grid.Panel', { ... })`来创建Grid,并设置`columns`,`store`等属性。...

    Ext框架的Grid使用介绍

    Grid组件在EXT JS中扮演着数据表格的角色,可以展示多列数据,并且支持排序、分页、筛选、编辑等功能。它的灵活性在于能够根据需求定制各种复杂的行为,如自定义列渲染、行编辑、拖放排序等。以下是一些关于EXT JS ...

Global site tag (gtag.js) - Google Analytics