Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在多选组合中具有指定值的Ext属性网格_Javascript_Extjs_Extjs4.2 - Fatal编程技术网

Javascript 在多选组合中具有指定值的Ext属性网格

Javascript 在多选组合中具有指定值的Ext属性网格,javascript,extjs,extjs4.2,Javascript,Extjs,Extjs4.2,我正在尝试为extjs属性网格中的多选组合框赋值。当我为字段指定一些值时,网格无法渲染字段。如何解决这个问题?请在下面查找代码 Ext.create('Ext.grid.property.Grid', { title: 'Properties Grid', width: 400, renderTo: Ext.getBody(), source: { name: "My Object", created: Ext.Date.parse('10/1

我正在尝试为extjs属性网格中的多选组合框赋值。当我为字段指定一些值时,网格无法渲染字段。如何解决这个问题?请在下面查找代码

Ext.create('Ext.grid.property.Grid', {
   title: 'Properties Grid',
   width: 400,
   renderTo: Ext.getBody(),
   source: {
       name: "My Object",
       created: Ext.Date.parse('10/15/2006', 'm/d/Y'),
       timeofday: "12:00 PM",
       available: false,
       version: 0.01,
       description: Ext.encode({
           product: 'Clorox',
           tagline: 'The Shinyest White!'            
       }),
       childAccounts:['john','mike']

   },
   customEditors: {
       timeofday: Ext.create('Ext.form.TimeField', {selectOnFocus: true}),
       description: {
           xtype: 'customeditorfield'  
       },
       childAccounts:Ext.create('Ext.form.ComboBox', {store: ['john', 'mike', 'harvey'],multiSelect:true}),
   },
   customRenderers: {
       timeofday: function( v ) {
           return Ext.isDate( v ) ? Ext.Date.format( v, 'g:i A' ) : v;
       }
   },
   propertyNames: {
       name: '(name)',
       created: 'Created Date',
       timeofday: 'Time of Day',
       available: 'Available?',
       version: 'Version',
       description: 'Product Description',
       childAccounts: 'Child Description'
   },
   listeners: {
       beforeedit: function( editor, e, opts ) {
           if( e.record.get( 'name' )=='name' || e.record.get( 'name' )=='version' ) {
               return false;            
           }                
       }            
   }
});

解决方案:

您的“childAccounts”配置不正确。尝试替换:

childAccounts:['john','mike']
与:

注意事项:

使用ExtJS 4.2进行测试。

默认情况下,属性网格只支持“可编辑”值,Sencha不将数组计算为可编辑。如果需要,可以尝试覆盖此选项。该限制在
Ext.grid.property.Store.getReader
中引入,其中有一个函数
isEditableValue

isEditableValue: function(val){
    return Ext.isPrimitive(val) || Ext.isDate(val) || val === null;
}
如果您将此功能更改为允许阵列,它似乎可以工作,但不提供保修。我使用以下代码进行快速测试:

Ext.define('', {
    override: 'Ext.grid.property.Store', 
    getReader: function() {
        var newReader = !this.reader;
        this.callParent(arguments);
        if(newReader) this.reader.isEditableValue = function(val) {
            return Ext.isPrimitive(val) || Ext.isDate(val) || Ext.isArray(val) || val === null;
        }
        return this.reader;
    }
});

(与往常一样,无需保修)

现在它可以在网格中显示childAccounts记录,但在组合框的下拉列表中不会选择给定的值
Ext.define('', {
    override: 'Ext.grid.property.Store', 
    getReader: function() {
        var newReader = !this.reader;
        this.callParent(arguments);
        if(newReader) this.reader.isEditableValue = function(val) {
            return Ext.isPrimitive(val) || Ext.isDate(val) || Ext.isArray(val) || val === null;
        }
        return this.reader;
    }
});