最近刚接触ext,如何实现EditorgGridPanel个别单元格禁止编辑

我现在有一个可以编辑的grid,可以动态添加一行数据,但是我对这一行数据的输入要有控制,比如前面的单元格有个combobox,根据选择的值来决定后面面的单元格是否可编辑(就是是否禁止让用户输入数据),我尝试过对columnModel的字段编辑器设置disable为true,但是这样就把这一列上的多有行都禁止编辑了。因为刚刚接触ext,所以对单元格的控制还很迷惑,不知道有没有哪位前辈有过类似的功能实现,或者给些思路呀!

可以在grid的beforeedit事件中判断和处理字段编辑器为是否可以编辑,来执行disable()或enable()

EXT中是用一个列编辑器来控制这一列的所有格子的,而渲染到页面后,仅仅是用div和table来画表,并没有input等控件,所以单单从控件考虑我还没有想到什么好的办法,我上面的方法同样能达到这个效果

你可以做一个换行侦听事件,再因为触发了combobox事件改变属性的编辑框状态改回来就可以

说错,是对grid做一个changeselect的事件

单元格也可以disable

首先给Combobox添加一个select事件,然后在那个方法中增加你的业务逻辑就可以了。
比如像这样:
// ComboBox换成你自己的Combobox对象就可以了
ComboBox.on("select",onIESelect);
var onIESelect = function(combo,record,index){
try{
var index = record.get("index");
//YouEditGrid是一个对象,editGrid是YouEditGrid的一个属性比如:YouEditGrid{editGrid}
var editorGrid = YouEditGrid.editGrid;

     var _nameValue = editorGridPanel.record.get("_name");
     var _nameIndex = editorGrid.getColumnModel().getIndexById("_name");

 }catch(e){alert(e.message);};

}.createDelegate(this);

[color=red]上面没写完:[/color]

首先给Combobox添加一个select事件,然后在那个方法中增加你的业务逻辑就可以了。
比如像这样:
// ComboBox换成你自己的Combobox对象就可以了
ComboBox.on("select",onSelect);
var onSelect = function(combo,record,index){
try{
var index = record.get("index");
//YouEditGrid是一个对象,editGrid是YouEditGrid的一个属性比如:YouEditGrid{editGrid}
var editorGrid = YouEditGrid.editGrid;
//这个就是你store中的value,表示当前你Combobox选择的value,editorGridPanel是表示你EditGrid所在的那个Panel
var nameValue = editorGridPanel.record.get("_name");
//这个就是你当前Combobox所选择的索引
var nameIndex = editorGrid.getColumnModel().getIndexById("_name");
//满足条件的为不能修改
if (nameValue =='你自己的条件'){
editorGrid.getColumnModel().getCellEditor(nameIndex,0)=new Ext.form.TextField({value: nameValue,readOnly:true});
}
}catch(e){alert(e.message);};
}.createDelegate(this);