在extjs网格单元格编辑中使用beforecheckchange侦听器获取单元格div

时间:2016-03-17 14:13:40

标签: javascript extjs extjs4

我在extjs网格单元格编辑中使用beforeCheckChange监听器checkColumn

一旦取消选中,我想删除此单元格的脏标志。所以我尝试使用单元格"x-grid-dirty-cell" id删除div个Cl。

Ext.select("ext-gen2654").removeCls('x-grid-dirty-cell');

以下是听众

listeners: {
    beforecheckchange: me.onCheckcolumnBeforeCheckChange
}

onCheckcolumnBeforeCheckChange: function(comp, rowIndex, checked, eOpts) {  
    Ext.select("ext-gen2654").removeCls('x-grid-dirty-cell');
}

如何仅获取此单元格的div ID?

如果我们在取消选中后有替代方法可以移除脏记录,请告诉我。

已编辑 - 显示替代记录的复选框

Ext.getCmp('grid').gridColumns[0]=  {
    xtype: 'checkcolumn',                                               
                dataIndex: 'SELECT',
                width: 55,
                stopSelection: true,
                renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
                if(row%2==0){  // i need to display alternative checkbox
                    var cssPrefix = Ext.baseCSSPrefix,
                    cls = cssPrefix + 'grid-checkcolumn';


                        if (this.disabled || value == 'N') {
                            metaData.tdCls += ' ' + this.disabledCls;
                        }
                if (!value) {
                cls += ' ' + cssPrefix + 'grid-checkcolumn-checked';
                }

                    return '<img class="' + cls + '" src="' + Ext.BLANK_IMAGE_URL + '"/>';
                        }

            }

,

try listener code to remove dirty mark, but no luck

    onCheckcolumnBeforeCheckChange: function(comp, rowIndex, checked, eOpts) {  
        var store=Ext.getCmp('grid').getStore();
        var record= store.getAt(rowIndex);
        if(checked==true){  
        record.dirty= false;
        record.commit();    
        store.commitChanges();

        }

1 个答案:

答案 0 :(得分:0)

如果要删除整个网格的脏标志,use markDirty on the grid view

viewConfig:{
    markDirty:false
}

如果只想删除整列的脏标志,只需在列上设置tdCls:

tdCls:'doNotMarkDirty',

并添加以下CSS(在经典主题中测试,其他主题可能不同):

.doNotMarkDirty.x-grid-dirty-cell {
    background-image:none;
}

如果要删除整列的脏标志,并且让模型忽略对该列所做的任何更改,请尝试adding a custom isModified function to the model definition

isModified:function(dataIndex) {
      if(dataIndex=="myDataIndex") return false;
      me.callParent(arguments);
}

如果您想让记录知道它不再脏,请查看record.commit()