遇到问题,需要你的建议
我刚开始编写编辑网格。 (我实际上将此网格用作搜索过滤器编辑器,即具有标准名称,运算符和值的列)。 现在,对于值字段,我想为不同的行设置不同的编辑控件。例如,当条件类型是字符串时我想显示一个文本框,当它是日期时,我想要一个日期时间编辑器。 事实上,我需要在编辑开始之前控制“编辑控件创建/显示”。并且行之间应该不同。与我发现的为列固定的示例不同。
为了实现这一点,你们可以建议我需要做的步骤吗?如果你们其中一个人可以指引我,我可能会弄明白。
谢谢和最好的问候
答案 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'