代码之家  ›  专栏  ›  技术社区  ›  Moim

ExtJS编辑器网格中的自定义编辑控件

  •  1
  • Moim  · 技术社区  · 14 年前

    有问题,需要你的建议

    我刚开始写编辑表格。(我将实际使用此网格作为搜索筛选器编辑器,即具有条件名称、运算符和值的列)。 现在,对于值字段,我想对不同的行使用不同的编辑控件。例如,当条件类型为string时,我想显示一个文本框;当条件类型为date time时,我想要一个datetime编辑器。 所以事实上,我需要在编辑开始之前控制“编辑控件创建/显示”。行之间应该是不同的。与我发现的列固定的示例不同。

    为了实现这一点,你们能建议我需要做的步骤吗?如果你们中有人能给我指路的话,我也许能搞清楚。

    谢谢和问候

    3 回复  |  直到 14 年前
        1
  •  3
  •   user338671    14 年前

    实际上,您可以根据所在的列动态返回不同的编辑器和呈现,从而轻松地完成此任务。在ColumnModel对象中,可以定义如下内容。请注意,我正在获取每个记录的类型属性以确定其类型。我有一个对象包含了我所有不同类型的编辑器,对于渲染器也是一样的,然后基于我为该单元格发出的不同编辑器或渲染器的类型。

    editors: { 'default': {xtype:'textfield'},
               texttype: {xtype:'textfield'},
               numbertype: {xtype:'numberfield'},
               combotype: {xtype:'combo'}....... etc. } 
    
    getCellEditor: function(colIndex, rowIndex) {
                var store = Ext.getCmp('mygrid').getStore();
                var field = this.getDataIndex(colIndex);
                var rec = store.getAt(rowIndex);
                var type = rec.get('type');
                if (type in this.editors) {
                    return this.editors[type];
                } else {
                    return this.editors['default'];
                }
    
            },
    
        2
  •  0
  •   It Grunt    14 年前

    在editorgrid的配置部分,您需要定义 自定义编辑器:

    {
      xtype: 'editorgrid',
      id   : 'mygridID',
      stripeRows: true,
      ...
      ...
      ,customEditors :  {
        //configs go here or pre-define the configs prior to this
         'columnName1' : new Ext.grid.GridEditor(new Ext.form.Combobox(configObject)),
    
       //configs go here or pre-define the configs prior to this
         'columnName7' : new Ext.grid.GridEditor(new Ext.form.CheckBox(configObject))
       }
    }
    
        3
  •  0
  •   Martin Zeitler    11 年前

    使用此网格配置-选择整行:

    selType: 'rowmodel'