`
qimo601
  • 浏览: 3439387 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

EditorGridPanel 中使用checkbox列,并包含afterEdit事件

阅读更多

    在EditorGridPanel中无法使用默认的CheckBox控件,因此采用第三方扩展的控件实现,

    以下是Ext.grid.CheckColu扩展类:

Ext.grid.CheckColumn = function(config){
    Ext.apply(this, config);
    if (!this.id) {
        this.id = Ext.id();
    }
    this.renderer = this.renderer.createDelegate(this);
};

Ext.grid.CheckColumn.prototype = {
    init: function(grid){
        this.grid = grid;
        this.grid.on('render', function(){
            var view = this.grid.getView();
            view.mainBody.on('mousedown', this.onMouseDown, this);
        }, this);
    },
    onMouseDown: function(e, t){
        if (t.id == this.id) {
            e.stopEvent();
            var index = this.grid.getView().findRowIndex(t);//行号
            var cindex = this.grid.getView().findCellIndex(t);//列好
            var record = this.grid.store.getAt(index);//行记录
            var field = this.grid.colModel.getDataIndex(cindex);//列名
            var value = !record.data[this.dataIndex];//点击后,获得当前checkbox值的相反值
            record.set(this.dataIndex, value);//设定checkbox被选择时候的值
            //事件的参数
            var e = {
               grid: this.grid,
               record: record,
               field: field, 
               originalValue: record.data[this.dataIndex],
               value: !record.data[this.dataIndex],
               row: index,
               column: cindex
           };

           //afterEdit事件 
           this.grid.fireEvent("afteredit", e); //申请事件,参数        

        }
    },
    renderer: function(v, p, record){
        p.css += ' x-grid3-check-col-td';
        return '<div id="' + this.id + '" class="x-grid3-check-col' + (v ? '-on' : '') + '">&#160;</div>';
    }
};

 

 

   在工程中使用:

   首先创建对象

var checkColumn = new Ext.grid.CheckColumn({   
                   header: "",   
                   dataIndex: 'indoor',   
                   width: 55   
        });  

 

   然后,在editorgrid组件中引入插件plugins:checkColumn(必须的)。

   创建cm加入checkColumn:

cm: new Ext.grid.ColumnModel(   
                                [   
                                checkColumn   
                                ,   
                                {   
                                    id: 'min'  
                                    ,header: '最小值'  
                                    ,dataIndex: 'min'  
                                    ,editor: new Ext.form.NumberField({   
                                        allowBlank: false  
                                    })   
                            )  

 

   创建Record对象也要加入相关内容:

var Record = Ext.data.Record.create([   
             {name: 'indoor', type: 'bool'}   
            ,{name: 'min'}   
            ,{name: 'max'}   
            ,{name: 'alarmType'}   
        ]);  

 

 

   最后创建Record:

var newRecord = new Record({indoor: false,min: min, max: max, alarmType: '轻微'});  

 

 

 

   前台如果调用afterEdit事件

//编辑后触发的事件,有异常,自动选中checkbox   
function afterEdit(e){ 
    //如果是CHECK_EXCEPTION列
    if (e.field == "CHECK_EXCEPTION") {
        //checkbox如果被选中
        if (e.record.get("CHECK_EXCEPTION") == true) 
        {   
            //仓库系统状态为1         
            if(e.record.get("STATE")=="1")
                //设置仓库实际状态为0
                e.record.set("REAL_STATE", "0");
            //仓库实际状态为0
            else if(e.record.get("STATE")=="0")
                //设置仓库实际状态为1
                e.record.set("REAL_STATE", "1");
            else
                e.record.set("REAL_STATE", "");
        }
        //checkbox如果被取消
        else if(e.record.get("CHECK_EXCEPTION") == false)
        {           
            e.record.set("REAL_STATE", "");           
        }
        
   }
}

 

参考文章三篇:

  EXT EditorGridPanel 中使用Ext.grid.CheckColumn (用来创建checkbox列)

  http://blog.csdn.net/davidxj/archive/2009/04/06/4052348.aspx

  Extjs,Ext.grid.CheckColumn 列修正版 (这个afterEdit例子不太好用

  http://blog.csdn.net/phker/archive/2009/06/25/4294241.aspx

  Ext.grid.CheckColumn问题 (从这篇获得afterEidt例子)

  http://www.vifir.com/bbs/html/20080722/1736736.html

 

 

界面:

分享到:
评论
3 楼 spring1118 2011-12-28  
贤饭?  
2 楼 qimo601 2010-10-08  
天涯海角tour 写道
你好,你的这个CheckBox控件怎么用啊,你写的我看不懂,我没有接触过extjs不知道怎么样引用 到项目中,你说的 “然后,在editorgrid组件中引入插件plugins:checkColumn(必须的)。
”editorgrid组件在哪啊,而且我在extjs中每个js文件中没有找到Ext.grid.CheckColumn,它在哪定义的啊,还有“以下是Ext.grid.CheckColu扩展类:
”把它单独写成一个JS吗,在我的项目中, var checkColumn = new Ext.grid.CheckColumn({
         header: 'Indoor',
        dataIndex: 'indoor',
         width: 55
       });一直报缺少对象的错,


EXTJS中不自带CheckBox控件的,我第一行就告诉你了,是从网上自己下的一个CheckColu扩展类。第一段JS代码是它的源代码。你在自己工程中直接调用就不会出现缺少对象这个错了。请结合一下我下面的参考文章。
1 楼 天涯海角tour 2010-09-18  
你好,你的这个CheckBox控件怎么用啊,你写的我看不懂,我没有接触过extjs不知道怎么样引用 到项目中,你说的 “然后,在editorgrid组件中引入插件plugins:checkColumn(必须的)。
”editorgrid组件在哪啊,而且我在extjs中每个js文件中没有找到Ext.grid.CheckColumn,它在哪定义的啊,还有“以下是Ext.grid.CheckColu扩展类:
”把它单独写成一个JS吗,在我的项目中, var checkColumn = new Ext.grid.CheckColumn({
         header: 'Indoor',
        dataIndex: 'indoor',
         width: 55
       });一直报缺少对象的错,

相关推荐

    解决editorgridpanel编辑时视图向右移动的问题

    通常,这样的修复代码会包括对上述策略的实现,比如使用`Ext.util.CSS`来修改样式,或者在`beforeedit`和`afteredit`事件中处理滚动条和视图的位置。为了进一步了解并应用这个修复,我们需要查看`bugfix.js`的内容,...

    可编辑表格Ext.grid.EditorGridPanel

    3. 提交更改:编辑完成后,EditorGridPanel会触发相应的事件,如afteredit,开发者可以通过监听这些事件来处理数据更新。 四、使用步骤 1. 创建Store:定义数据模型并加载数据。 2. 定义列模型:配置每列的字段名、...

    Extjs EditorGridPanel中ComboBox列的显示问题

    为了解决这个问题,我们需要在ColumnModel中对包含ComboBox的列使用`renderer`属性来自定义单元格的渲染方式。 以下是一个示例代码片段,展示了如何解决这个问题: ```javascript // 部门列表的store var ...

    Extjs可编辑的EditorGridPanel

    NULL 博文链接:https://zxf-noimp.iteye.com/blog/629629

    Ext可编辑的tree,EditorGridPanel

    因为项目的需求,实现一个可以编辑的tree,在网上找了一个牛人写的控件.Ext.ux.maximgb.tg.EditorGridPanel 把源码下载下来以后 不能运行,自己根据给出的列子,另写了一个小程序.不过并没有与数据库交互.

    ext 读取xml 可编辑grid

    在EXT JS框架中,"ext 读取xml 可编辑grid"是一个常见的需求,涉及到的主要知识点包括EXT的数据对象、EditorGridPanel的使用以及EXT对XML数据格式的支持。下面将详细阐述这些内容。 EXT JS是一个强大的JavaScript库...

    给Extjs的GridPanel增加“合计”行

    模板中包含合计值的占位符,这些占位符将在数据计算完成后被替换为真实的合计值。 4. **插入合计行到DOM**: - 在自定义View的`onRender`方法中,找到GridPanel的DOM元素,然后根据模板创建合计行的DOM结构,并将...

    GridPanel属性详解

    如果没有设置,则使用列索引与数据记录中的字段索引进行匹配。 4. **width** - **描述**:定义列的宽度。 5. **align** - **描述**:设置列内数据的对齐方式。 6. **hidden/fixed/menuDisabled/resizable/...

    ExtJS下拉列表树控件

    对于ExtJS EditorGridPanel中ComboBox列的显示问题,可能是因为数据没有正确绑定或格式化问题,确保`store`已加载数据,并且在`renderer`函数中正确显示数据。 至于回显问题,即在编辑时显示已有的数据,需要确保在...

    extjs 导入导出 Exel

    文件"Extjs利用服务器实现Excel数据导入editorgridpanel中显示_寒冰_新浪博客.mht"可能讲解了如何将Excel 文件的数据导入到EXTJS 的EditorGridPanel 中。导入过程一般包括: 1. 用户上传Excel 文件,EXTJS 通过...

    ExtJS使用笔记

    在典型的ExtJS应用程序中,你会看到很多标准的模式,如页面加载时通过Ext.onReady事件启动应用程序,以及使用Ext.application定义应用程序的启动入口。ExtJS程序启动后,会创建主窗口或其他容器组件,然后通过添加各...

    ExtJS 2.0实用简明教程

    内容包含: 1)ExtJS简介 2)获得ExtJS 3)应用ExtJS 4)布局概述 5)ExtJS版的Hello 6)Ext类库简介 7)Border区域布局 8)ExtJS的组件 9)Column列布局 10)组件的使用 11)Fit布局 12)Form布局 13)组件的配置属性 14)...

    ext的edittreegrid实现

    本文将深入探讨EXT JS中的Edit Tree Grid及其核心概念、使用方法和C#后端支持。 首先,EXT JS的TreePanel提供了树状数据的展示,每个节点可以展开或折叠,展示其子节点。而EditorGridPanel则允许用户对表格中的数据...

    EXTJS实用开发指南_个人整理笔记.pdf

    3. 事件处理:使用EXTJS的事件处理机制,避免使用原生JavaScript事件处理机制。 EXTJS是一个功能强大且灵活的JavaScript框架,用于构建RIA应用程序。本文档对EXTJS的基本概念、控件、工具和实践经验进行了讲解,...

    ext3 gridRowEditor本地数据简单demo,有注释

    开发者可能会使用`Ext.grid.EditorGridPanel`,并为每个列定义一个`editor`属性来启用单元格编辑。同时,Store的配置可能包括数据源(即"data"),以及定义字段的`fields`属性。 在深入理解这个demo的过程中,你...

    bs架构html编辑

    文档中提到的`ExtJS实现Excel导出.doc`和相关MHT文件可能包含如何使用ExtJS的组件,如`grid`或`editorgridpanel`,结合服务器端功能实现Excel数据导出的教程。ExtJS提供了内置的导出功能,可以通过配置实现数据的...

    treePanel与gridPanel技术实现页面的增删改查

    - GridPanel通过`ColumnModel`定义列的显示和行为,包括列宽、对齐方式、是否可编辑等。 - 表格中的行可以被选中,通过监听`cellclick`或`rowselect`事件,可以响应用户的选择操作。 - GridPanel的编辑功能通常...

    Ext.grid.GridPanel右键菜单

    右键菜单的资料,代码已经详细描写。请仿照文件中所描述即可使用,不限于EXT4.0以上版本使用。

Global site tag (gtag.js) - Google Analytics