大家好,有个很头痛的问题想要寻求大家的帮助,希望处理过的能帮忙回复下!谢谢!废话不多说。
 
如下图两个附件,字段名 为COMBO 类型,需求是希望当字段名的值为“告警级别”的时候的  “值”该列 为COMBOX , 否则为文本列,现在问题是
当字段名值 为告警级别的时候,值这列所有的都变为了COMBOX ,我而仅仅是只需要 字段名为告警级别这行的 值列变为COMBOX,也就 是相互独立,相互不影响!
请各位帮忙看看!!!
 
下面是部分源代码!!
 
Js代码  
function getRuleParameterEditorCm() {  
      
    var relationCombox = new Ext.form.ComboBox( {  
        id : 'relationCombox',  
        store : relationDs,  
        lazyRender:true,  
        valueField : 'attributeValue',  
        displayField : 'valueDesc',  
        editable : false,  
        typeAhead : true,  
        mode : 'local',  
        forceSelection : true,  
        triggerAction : 'all',  
        allowBlank : false,  
        selectOnFocus : true  
    });  
      
    var fieldNameCombox = new Ext.form.ComboBox( {  
        id : 'fieldNameCombox',  
        store : fieldNameDs,  
        valueField : 'attributeValue',  
        displayField : 'valueDesc',  
        lazyRender:true,  
        editable : false,  
        typeAhead : true,  
        mode : 'local',  
        forceSelection : true,  
        triggerAction : 'all',  
        allowBlank : false,  
        listeners : {  
            select : function(opt) {  
                var val = opt.value;  
                if (val == FIELD_NAME_NODE) {  
                    fieldType = FIELD_TYPE_STRING;  
                } else if(val == FIELD_NAME_NODEALIAS) {  
                    fieldType = FIELD_TYPE_STRING;  
                } else if(val == FIELD_NAME_ALERTGROUP) {  
                    fieldType = FIELD_TYPE_STRING;  
                } else if(val == FIELD_NAME_ALERTKEY) {  
                    fieldType = FIELD_TYPE_STRING;  
                }
            }  
        },  
        selectOnFocus : true  
    });  
    var operatorCombox = new Ext.form.ComboBox( {  
        id : 'operatorCombox',  
        store : operatorDs,  
        valueField : 'attributeValue',  
        displayField : 'valueDesc',  
        editable : false,  
        typeAhead : true,  
        lazyRender:true,  
        mode : 'local',  
        forceSelection : true,  
        triggerAction : 'all',  
        allowBlank : false,  
        selectOnFocus : true  
    });  
    var leftBracketCombox = new Ext.form.ComboBox( {  
        id : 'leftBracketCombox',  
        store : leftBracketDs,  
        valueField : 'attributeValue',  
        displayField : 'valueDesc',  
        editable : true,  
        typeAhead : true,  
        lazyRender:true,  
        mode : 'local',  
        forceSelection : true,  
        triggerAction : 'all',  
        selectOnFocus : true  
    });  
    var rightBracketCombox = new Ext.form.ComboBox( {  
        id : 'rightBracketCombox',  
        store : rightBracketDs,  
        valueField : 'attributeValue',  
        displayField : 'valueDesc',  
        editable : true,  
        typeAhead : true,  
        lazyRender:true,  
        mode : 'local',  
        forceSelection : true,  
        triggerAction : 'all',  
        selectOnFocus : true  
    });  
    return new Ext.grid.ColumnModel( {  
        defaults : {  
            sortable : false  
        },  
        columns : [ new Ext.grid.RowNumberer(), {  
            id : 'relation_col',  
            header : '关系',  
            dataIndex : 'relation',  
            editor : relationCombox,  
            renderer: comboRenderer(relationCombox,'ruleParameterGrid') ,  
            width : 60  
        }, {  
            header : '左括号',  
            dataIndex : 'leftBracket',  
            editor : leftBracketCombox,  
            renderer: comboRenderer(leftBracketCombox,'ruleParameterGrid') ,  
            width : 60  
        }, {  
            header : '字段名',  
            dataIndex : 'fieldName',  
            editor : fieldNameCombox,  
            renderer: comboRenderer(fieldNameCombox,'ruleParameterGrid') ,  
            /*renderer : function(value) { 
                var record = fieldNameCombox.findRecord(fieldNameCombox.valueField, value); 
                return record ? record.get(fieldNameCombox.displayField) : fieldNameCombox.valueNotFoundText; 
            },*/  
            width : 120  
        }, {  
            header : '操作',  
            dataIndex : 'operator',  
            editor : operatorCombox,  
            renderer: comboRenderer(operatorCombox,'ruleParameterGrid') ,  
            width : 80  
        }, {  
            id : 'value',  
            header : '值',  
            dataIndex : 'fieldValue',  
            editor : new Ext.form.TextField( {  
                emptyText : '输入多个值请用逗号,分隔',  
                maxLength : 512,  
                allowBlank : false  
            }),  
            width : 260  
        }, {  
            header : '右括号',  
            dataIndex : 'rightBracket',  
            editor : rightBracketCombox,  
            renderer: comboRenderer(rightBracketCombox,'ruleParameterGrid') ,  
            width : 60  
        } ]  
    });  
}  
    function getRuleParameterEditorGridPanel(ds, cm, id) {
Js代码  
    var grid = new Ext.grid.EditorGridPanel( {  
        title : '规则条件',  
        id : id,  
        store : ds,  
        cm : cm,  
        region : 'south',  
        height : 190,  
        autoScroll : true,  
        stripeRows : true,  
        enableHdMenu : false, // 是否启用表头箭头  
        enableColumnMove : false, // 列是否可以移动  
        deferRowRender : false,  
        frame : true,  
        clicksToEdit : 1,  
        tbar : [ {  
            text : '添加新行',  
            iconCls : 'button_add',  
            handler : function() {  
//              if (false == validateGridData(grid, cm)) {  
//                  Ext.Msg.alert(PROMPT_TITLE, '请先将新行填充后再进行该操作!');  
//                  return false;  
//              }  
                // access the Record constructor through the  
                // grid's store  
                var Dic = grid.getStore().recordType;  
                var p = new Dic(/*{ 
                    relation: 0, 
                    leftBracket: 1, 
                    fieldName: '', 
                    operator: 0 ,  
                    fieldValue : '', 
                    rightBracket : 1 
                }*/);  
                grid.stopEditing();  
                // 添加至最后行  
                ds.insert(ds.getCount(), p);  
                grid.startEditing(ds.getCount() - 1, 0);  
            }  
        }, {  
            text : '删除',  
            iconCls : 'button_delete',  
            handler : function() {  
                var sm = grid.getSelectionModel();  
                var cell = sm.getSelectedCell();  
                if (null == cell) {  
                    Ext.Msg.alert(PROMPT_TITLE, PROMPT_DELETE_SELECT);  
                    return false;  
                }  
                Ext.Msg.confirm(PROMPT_TITLE, PROMPT_DELETE_CONFIRM, function(btn) {  
                        if (btn == 'yes') {  
                            var store = grid.getStore();  
                            var record = store.getAt(cell[0]);  
                            var id = record.get('paramId');  
                            var results = "";  
                            if (!isUndefined(id)) {  
                                var params = {  
                                    'ids' : id  
                                };  
                                results = new AjaxSubmit().submitRequest('deleteRuleParam.action', params, false, false);  
                                if (null != results  
                                        && results.length > 0  
                                        && results.status.statusText == AJAX_STATUS_STATUSTEXT) {  
                                    store.reload();  
                                }  
                            }  
                            store.remove(record);  
                            store.commitChanges();  
                        }  
                });  
            }  
        } ]  
    });  
    /*grid.on('afteredit',  function(e) { 
        validateRuleParameter(grid,grid.getStore()); 
    });*/  
              
    return grid;  
}  
 
 
Js代码  
var ruleParmaCm = getRuleParameterEditorCm();  
    var ruleParamEditorGridPanel = getRuleParameterEditorGridPanel(ruleParamDs, ruleParmaCm, 'ruleParameterGrid');  
      
    ruleParamEditorGridPanel.on('afteredit',function(e) {  
        if(e.column == 3) {  
            // 告警级别  
            if(e.value == FIELD_NAME_SEVERITY) {  
                var combo = new Ext.form.ComboBox({  
                    typeAhead: true,  
                    triggerAction: 'all',  
                    lazyRender:true,  
                    mode: 'local',  
                    store: new Ext.data.ArrayStore({  
                        id: 0,  
                        fields: [  
                            'value',  
                            'display'  
                        ],  
                        data: [[1, 'item1'], [2, 'item2']]  
                    }),  
                    valueField: 'value',  
                    displayField: 'display'  
                });  
                var column = e.grid.getColumnModel().columns[e.column + 2];  
                column.setEditor(combo);  
                /*ed = column.getCellEditor(e.row); 
                 if (ed && (e.value != null || e.value != '')) { 
                    ed.destroy(); 
                 } 
                 else { 
                    column.setEditor(combo); 
                 }*/  
  
                // 当前行  
//              e.row   
//              e.grid.getColumnModel().setEditor(e.column + 2,combo);  
            }  
        }  
    });