extjs GridPanel SelectionModel 相互关联


ext版本为2.1


1. 自定义GridPanel类


Ipms.OrderGridPanel = function (id, title, iconCls) {
    // ..
                                                                                                           
    this._selections = new Ext.grid.CheckboxSelectionModel();
                                                                                                           
    // ..
                                                                                                           
    Ipms.OrderGridPanel.superclass.constructor.call(this, {
        // ..
        sm: this._selections // 注意
        //..
    });
};


2. 上述代码,显示的定义了GridPanel关联到SelectionModel。同时提供了方法,来getSelectionModel如下:


var odGridPanel = new Ipms.OrderGridPanel('OrderGridPanel','订单列表'),
    sm = odGridPanel.getSelectionModel();


3. 熟悉SelectionModel的er都知道,SelectionModel也可以获取所属Grid的引用,如下:

var parentGrid = sm.grid; // sm即为上面实例化的SelectionModel


4. 直接访问对象的属性,就不是面向对象的作风。一会儿用接口访问,一会儿直接访问,这是要闹哪样?当然了,这不是重点。这里想知道的是是否有更优雅的解决方案,实现组合元素的相互访问?


5.Ext2.1的做法,是grid在render的时候调用SelectionModel的init方法,并把grid做为参数传递进去。如下:


// grid private
onRender : function(ct, position){
    Ext.grid.GridPanel.superclass.onRender.apply(this, arguments);
    // ..
    this.getSelectionModel().init(this); // 注意
    this.view.render();
},


// Ext.grid.AbstractSelectionModel
init : function(grid){
        this.grid = grid;
        this.initEvents();
},


6.待更新。。



你可能感兴趣的:(ExtJs,gridPanel,selectionmodel)