大家好,有个很头痛的问题想要寻求大家的帮助,希望处理过的能帮忙回复下!谢谢!废话不多说。
如下图两个附件,字段名 为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);
}
}
});
如下图两个附件,字段名 为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);
}
}
});
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货