项目中碰到一个问题,grid中的数据加载时,store会把相应数据写到对应的表格里,如果想跟后台交互的话,可以把某一列加上一个numberfield或是textfield,当这一列的某一个单元格得到焦点时,会成为可编辑状态,但不知道大家注意到没有,numberfield或是textfield得到焦点时,里面原本的值会稍向下移动一点,像“动”了一下一样,现在我的问题是,grid中有两列A和B,同一行中,B列会动态跟据A列的值而选择状态,即A列的值是1时,B列可编辑,如果A列值为2,B列不可编辑,目前做法是,A列是一个combobox,B列是一个numberfield,问题就是,如果B列某一表格可编辑(即A列值选择了1),没什么问题,但如果B列表格不可编辑(A列值选择2),当点击该表格时,因为numberfield得到焦点,里面的值会向下稍稍移动一下,同时移动后的numberfield也是不可编辑的,而grid加载store时,表格原本就有一个值,这样的话,同一单元格中既有grid本身的一个值,又有numberfield的值,就会有一个类似“重影”的效果,请问怎么才能解决这个问题呀,请高手们给明示下。store:
store = new Ext.data.Store({
proxy : ......
reader : new Ext.data.JsonReader({
root : rootA,
totalProperty : 5,
id : 'id',
fields : [{
name : 'columnA',
type : 'string'
},{
name : 'columnB',
type : 'string'
}]
})
})列头
var colM = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {
header : '列A',
dataIndex : 'columnA',
editor : new Ext.form.ComboBox({
id : 'columnA',
name : 'columnA',
store : new Ext.data.SimpleStore({
fields: ['value', 'text'],
data : [['2','非公式'],['1','公式']]
}),
mode: 'local',
triggerAction: 'all',
valueField: 'value',
displayField: 'text'
}),
renderer : function(value, metadate, record, colIndex, rowIndex) {
if (value == "非公式/公式") {
return "非公式";
} else if(value == '2'){
return "非公式";
}else if(value == '1'){
return "公式";
}
return value;
}
},{
header : '列B',
dataIndex : 'columnB',
editor:new Ext.form.NumberField({
xtype : 'numberfield',
id : 'columnB',
name : 'columnB',
})
}
])grid就不贴了,就是一个普通的EditorGridPanel
store = new Ext.data.Store({
proxy : ......
reader : new Ext.data.JsonReader({
root : rootA,
totalProperty : 5,
id : 'id',
fields : [{
name : 'columnA',
type : 'string'
},{
name : 'columnB',
type : 'string'
}]
})
})列头
var colM = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {
header : '列A',
dataIndex : 'columnA',
editor : new Ext.form.ComboBox({
id : 'columnA',
name : 'columnA',
store : new Ext.data.SimpleStore({
fields: ['value', 'text'],
data : [['2','非公式'],['1','公式']]
}),
mode: 'local',
triggerAction: 'all',
valueField: 'value',
displayField: 'text'
}),
renderer : function(value, metadate, record, colIndex, rowIndex) {
if (value == "非公式/公式") {
return "非公式";
} else if(value == '2'){
return "非公式";
}else if(value == '1'){
return "公式";
}
return value;
}
},{
header : '列B',
dataIndex : 'columnB',
editor:new Ext.form.NumberField({
xtype : 'numberfield',
id : 'columnB',
name : 'columnB',
})
}
])grid就不贴了,就是一个普通的EditorGridPanel
Ext中重复的id就会导致css样式无效,所有的组件都是黑色阴影的那种。
有时候是出现错误会不同,如改变组件id相同的值会影响到其他的组件
你改了id就不行了,说明你的id在其他的地方引用到了。
你找到对应的地方改下就好了