项目中碰到一个问题,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

解决方案 »

  1.   

    把列中的编辑控件的id属性都去掉,渲染到html页面不可以有相同id的标签
      

  2.   

    我试了下,确实,去掉numberfield里的ID(或是修改成不同的名),没有重影的效果了,但同时,可编辑的表格出问题了,现在怎么点都没反应,而且其他所有列都不可编辑了
      

  3.   


    Ext中重复的id就会导致css样式无效,所有的组件都是黑色阴影的那种。
    有时候是出现错误会不同,如改变组件id相同的值会影响到其他的组件
    你改了id就不行了,说明你的id在其他的地方引用到了。
    你找到对应的地方改下就好了