Extjs4.2.0 Grid

向服务器更新一个单元格,网上大多数教程是以下写法,构建参数然后AJAX提交给服务器处理

grid单元格编辑,获取单元格对应 列名:eOpts.column.text

列数:this.up('grid').view.headerCt.getColumnCount()


EXTJS4 gridpanel中动态的显示/隐藏某个列
 

在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

        }

 

posted on 2013-05-24 15:16  xsSystem  阅读(664)  评论(0编辑  收藏  举报