`
qimo601
  • 浏览: 3420589 次
  • 性别: 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
       });一直报缺少对象的错,

相关推荐

    Extjs EditorGridPanel中ComboBox列的显示问题

    EditorGridPanel中嵌入ComboBox通常不会正常显示ComboBox的store中本想显示字段,而是显示的EditorGridPanel中 store的dataindex指定的字段内容。

    Extjs可编辑的EditorGridPanel

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

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

    NULL 博文链接:https://fourfire.iteye.com/blog/355853

    Ext可编辑的tree,EditorGridPanel

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

    可编辑表格Ext.grid.EditorGridPanel

    此文档是可编辑表格Ext.grid.EditorGridPanel的说明以及示例的源代码,放到eclipse里面即可运行,显示出效果!

    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)...

    给Extjs的GridPanel增加“合计”行

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

    Ext.grid.GridPanel右键菜单

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

    ext 读取xml 可编辑grid

    ext 数据对象的定义 EditorGridPanel的使用 ext读取xml ext对各种数据格式的支持

    GridPanel属性详解

    详细介绍GridPanel各项属性,ExtJS 普通表格:Ext.grid.GridPanel属性详解

    extjs实例与学习资料

    所以自己学了一段时间,在专案才发现extjs的强大,无论对于开发者还是使用者他都是一场视觉盛宴,这里有我从学习开始做的一些笔记和例子也有自己收集的学习资料,里面包括分页,grid,tree,显示树信息的TreePanel、...

    Ext 3.2的一个TreeGrid

    感谢 Ericzhen 远离颠倒梦想,蕴籍无上清凉 这里引用它的资源 仅作分享 http://www.cnblogs.com/Ericzhen/archive/2012/06/11/2545186.html

    ExtJS下grid的一些属性说明

    1.界面修改(css style): Extjs中界面风格与我们产品本身的风格有很大不同,从边框、选中行的颜色到鼠标移动到的... GroupingView, EditorGridPanel): Extjs的grid功能强大,如排序、隐藏列或移动列等,这些都有一些属

    EXTJS 学习笔片段1

    EditorGridPanel 使用本地store Toolbar工具菜单创建 分页工具栏创建 Window 弹出处理window窗口(模态窗口) MessageBox show(报错窗口、保存提示、选择窗口) alert prompt 实用工具类 JS异常捕捉 Ajax...

    EXT核心API详解

    45、Ext.form.Field类 …………………… 41 46、Ext.form.Checkbox类 …………… 42 47、Ext.form.Radio类 ………………… 43 48、Ext.form.HtmlEditor类 …………… 43 49、Ext.form.TextField类 …………… 44 50...

    ExtJs2.0简明教程

    …….13 2.5 事件处理……………………………………………………………………………………………………………15 第三章 使用面板………………………………………………………………………………………………...

    ExtJS入门教程(超级详细)

    1、Ext类 ………………………………… 2 2、Array类 …………………………… 4 3、Number类 …………………………… 4 4、...73、Ext.grid.EditorGridPanel类 ……… 62 74、Ext.grid.PropertyGrid类 …………… 65

    extjsnaction

    1 A framework apart 2 Back to the basics 3 Events, Components, and Containers ...8 The EditorGridPanel 9 Taking root with Trees 10 Toolbars and Menus 11 Drag and drop with Widgets

Global site tag (gtag.js) - Google Analytics