日期:2014-05-16  浏览次数:20683 次

高分求解ext gridpanel 难点
gridpanel 的editor里动态根据某一行的某一个值来设置这一行的editor是否可编辑。
谢谢!

------解决方案--------------------
给Ext.grid中的ColumnModel添加你自定义的方法,传入参数为colIndex,rowIndex,根据grid中的store
获取当前记录,根据记录返回是否可编辑。。。
然后在你定义grid实例后,调用一下此方法就可以了。。。
------解决方案--------------------
这是我工程里的代码片段,函数buildColumns()负责构造EditorGridPanel的列模型
JScript code

buildColumns    : function(){
    var colM = new Ext.grid.ColumnModel({
          columns   : [
            new  Ext.grid.RowNumberer(),
            {header: "ID", dataIndex: 'id',  hidden: true,editable  : false,width: 50},
            {header: "金融机构名称", dataIndex: 'financial_organ_name', width: 200,align: 'left',editor: this.organizationName()},
            {header: "金融机构代码", dataIndex: 'financial_organ_code',  hidden: true,editor: this.financialCodeCombo()},
            {header: "组织机构代码", dataIndex: 'organ_code',  hidden: true,editor: this.organizationCodeCombo()},
            {header: "网点所属地区", dataIndex: 'branch_district',  hidden: true},
            {header: "贷款人", dataIndex: 'lender'}
            //...
          ],
          isCellEditable: function(col, row) {
                if (row%2==0 && col==6) {//替换你想要的条件,这里假设第六列偶数行可编辑
                  return false;
                }
                return Ext.grid.ColumnModel.prototype.isCellEditable.call(this, col, row);
              }
        });
     return colM;
  }

------解决方案--------------------
我现在手头上没有API 无法查找 说下思路,希望能够帮到楼主:

1、看下API,有相应的API就不用看第2条方案了。

2、如果API中没有相应的方法 可以Firebug看下这个EditorGrid每一行的dom结构,看每次生成的dom结构有什么规律 然后直接用js操作Dom即可 不必非依赖于Ext的API