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

时间:2010-11-12 13:20:38

标签: extjs

遇到问题,需要你的建议

我刚开始编写编辑网格。 (我实际上将此网格用作搜索过滤器编辑器,即具有标准名称,运算符和值的列)。 现在,对于值字段,我想为不同的行设置不同的编辑控件。例如,当条件类型是字符串时我想显示一个文本框,当它是日期时,我想要一个日期时间编辑器。 事实上,我需要在编辑开始之前控制“编辑控件创建/显示”。并且行之间应该不同。与我发现的为列固定的示例不同。

为了实现这一点,你们可以建议我需要做的步骤吗?如果你们其中一个人可以指引我,我可能会弄明白。

谢谢和最好的问候

3 个答案:

答案 0 :(得分:3)

实际上,您可以通过动态返回不同的编辑器和渲染来轻松完成此操作,具体取决于您所在的列。在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'];
            }

        },

答案 1 :(得分:0)

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

{
  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))
   }
}

答案 2 :(得分:0)

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

selType: 'rowmodel'