Extjs4.2.0 Grid
向服务器更新一个单元格,网上大多数教程是以下写法,构建参数然后AJAX提交给服务器处理
grid单元格编辑,获取单元格对应 列名:eOpts.column.text
列数:this.up('grid').view.headerCt.getColumnCount()
在extjs3中,大家知道用
myGrid.getColumnModel().setHidden(i,true);
但到了4.0后,已经没有getColumnModel这个方法了,我们在Ext.panel.Table看到以下片段
if (headerCtCfg instanceof Ext.grid.header.Container) { me.headerCt = headerCtCfg; me.headerCt.border = border; me.columns = me.headerCt.items.items; }
也就是grid.columns已经保存了所有的gridcolumn,不需要再去get了,呵呵
结论:
grid.columns[i].hide()/show()
或者
grid.columns[i].setVisible(false/true);
function onEdit_grid_fy(e, eOpts) { // 等同判断 rec.raw.fieldName == rec.data.fieldName if (eOpts.originalValue == eOpts.value) return; // 获取被修改字段对应主表的主键值 var markets_zy_Fid = formPanel.getForm().getValues().Fid; // 获取被修改字段对应的行主键值 var id = eOpts.record.get('Fid'); // 获取被修改字段名称string var field = eOpts.field; // 获取修改后的新值 var value = eOpts.value; // 构建请求参数 var editCellData = { markets_zy_Fid : markets_zy_Fid, ID : id, Fld : field, value : value } Ext.Ajax.request({ url : 'S/xs_markets/xs_markets_fy.data.asp?act=editCell', scope : eOpts, async : false, params : { editCellData : Ext.JSON.encode(editCellData) }, success : function(response, opts) { // 操作成功,更新本地数据 var obj = Ext.decode(response.responseText); // 新增数据则填充表单Fid值 if (obj.act == "createRecord") {// 如果是新增 this.record.set("Fid", obj.newId); } this.record.commit();// 修改或新增 }, failure : function(response, opts) { console.log('server-side failure with status code ' + response.status); } });// end ajax }