2017-02-02 3 views
2

Ich habe eine Registerkarte mit wenigen Tabs. Einer von ihnen enthält Gitter und das Gitter enthält 3 Elemente: 1 Element mit Editor-Typ "Textfeld" und 2 Elemente mit Editor des Typs "Combobox".ExtJS Combobox Fehler: Kann nicht lesen 'Eigenschaft' von undefined

Das Problem: Ich möchte den Combobox Store basierend auf der vorherigen Combobox filtern. Aber aus irgendeinem Grund funktioniert es nur das erste Mal. Danach gibt der Store undefined zurück.

Hier ist mein Code:

items:[{ 
    xtype: 'grid', 
    id:'schema', 
    border: false,  
    data:[], 
    columns: 
    [{ 
     text  : 'Size', 
     dataIndex: 'size', 
     id: "SizeDropdown", 
     width : 200, 
     sortable : true, 
     editor : { 
      xtype: 'combobox', 
      id:'SelectSize', 
      editable:true, 

      valueField: 'typeValue', 
      displayField: 'typeValue', 
      mode:'local', 
      lastQuery: '', 
      listeners:{ 
      }, 
      store: new Ext.data.SimpleStore({ 
       fields: ['size', 'typeValue'], 
       data: [ 
         ['char', '12'], 
         ['char', '30'], 
         ['char', '31'], 
         ['int', '250'], 
         ['int', '500'], 
         ['int', '1000'], 
        ] 
      }), 
      allowBlank: false, 
      validator: function(input){         
       return true; 
      } 
     } 
    }], 
    listeners: { 
     beforeitemclick: function (eventThis, record, rowIndex, e) { 

      var SizeStore = Ext.getCmp('SizeDropdown').editor.store 

      SizeStore.clearFilter(); 
      SizeStore.filter('size', record.data.type); 
     } 
    } 

'record.data.type' gibt 'char' oder 'int', auf der vorherigen Combobox abhängig und die Filterung funktioniert in Ordnung . Aber nur das erste Mal. Danach geht es hier bricht:

var SizeStore = Ext.getCmp('SizeDropdown').editor.store 

und Rückkehr:

Cannot read property 'store' of undefined 

Ich verwende ExtJS "4.0.7"

+2

Sie könnten den Laden außerhalb der Klasse bewegen. Definieren Sie es normal. Ich denke nicht, dass es eine gute Idee ist, den Speicher im Editor zu definieren. Wären Sie auch in der Lage, Ihr Problem auf fiddle.sencha.com mit dieser Hilfe neu zu erstellen wäre viel einfacher. – pagep

+0

@pagep danke, ich erklärte den Laden außerhalb der Klasse und es hat funktioniert. :) Schreiben Sie es als Antwort, wenn Sie möchten, und ich werde es akzeptieren. – Nyagolova

Antwort

0

Deklarieren Shop außerhalb der Tab-Klasse hat seinen Zweck erfüllt.

Hier ist, was ich getan habe:

 var sizeDropdownStore = new Ext.data.SimpleStore({ 
      fields: ['size', 'typeValue'], 
      data: [ 
        ['char', '12'], 
        ['char', '30'], 
        ['char', '31'], 
        ['int', '250'], 
        ['int', '500'], 
        ['int', '1000'], 
      ] 
     }); 


     ...{ 
      xtype: 'combobox', 
      id:'SelectSize', 
      editable:true, 
      valueField: 'typeValue', 
      displayField: 'typeValue', 
      mode:'local', 
      listeners:{ 
      }, 
      store: sizeDropdownStore, 
      allowBlank: false 
     }... 
Verwandte Themen