2016-07-01 13 views
1

Ich schrieb meine Ajax in der Komponente init und ich bekomme alle erforderlichen Daten in this.store. Aber ich bekomme keinen Bereich des Speichers im Raster, wo ich definiert habe. Da ich die Klammer von Ajax Success schließe, bin ich nicht. Was ist der richtige Weg? mein Code:So erhalten Sie den Umfang des Geschäfts im Raster

initComponent: function() { 
    this.fields = []; 
    this.columns = []; 
    this.data = []; 
    this.store = []; 
    Ext.Ajax.request({ 
         url: 'XML/1Cohart.xml', 
         scope: this, 
         timeout: global_constants.TIMEOUT, 
         method: "GET", 
         disableCaching: true, 
         failure: function(response) { 
          utils.showOKErrorMsg(sdisMsg.ajaxRequestFailed); 
         }, 
         success: function(response) { 
          var datas = response.responseXML; 
          Ext.each(datas.getElementsByTagName("HEADER"), function(header) { 
           this.buildField(header); 
           this.buildColumn(header); 
          }, this); 
          Ext.each(datas.getElementsByTagName("G"), function (columnData) { 
           this.buildData(columnData); 
           this.fieldLength = this.fields.length; 
           this.record = []; 
           for (i = 0; i < this.fieldLength; i++) { 
            //debugger; 
            var fieldName = this.fields[i].name 
            this.record[i] = columnData.getAttribute(fieldName); 
           } 
           this.data.push(this.record);     
          }, this); 
          this.store = new Ext.data.ArrayStore({ 
           fields : this.fields 
          }); 
          this.store.loadData(this.data); // Getting correct data in this.store 
         }, 
        }); 

In derselben init Komponente in Ost-Panel i Gitter definiert. für welche Spalte kommt, aber Speicher wird nicht bekommen.

Grid Code ist

  { 
      xtype: 'panel', 
      region: "east", 
      header: true, 
      collapsible: true, 
      autoScroll: true, 
      //columnWidth: 0.5, 
      width: "30%", 
      hideBorders: true, 
      split: true, 
      items: [{ 
       xtype: 'panel', 
       title: "Search Result", 
       height:500, 
       items: [{ 
        xtype: 'grid', 
        itemid: 'ABC_GRID', 
        store : this.store, 
        autoHeight: true, 
        sm: new Ext.grid.CheckboxSelectionModel({singleSelect:true}), 
        frame: true, 
        columns : this.columns, 
       }] 

      }]   
+0

'initComponent' wird auf welcher Komponente aufgerufen? Wo ist Ihr Grid-Code definiert? –

+0

Grid ist auch in der init-Komponente. Ich verliere den Bereich von 'this.store' nur in Ajax-Erfolg. – David

Antwort

0

Nachdem die Daten in this.store Laden des Gitters erhalten und neu zu konfigurieren seinen Speicher

Ext.ComponentQuery.query("#ABC_GRID")[0].reconfigure(this.store); 

Für ExtJs 3

Wir benötigen Ext.getCmp() als Ext.ComponentQuery.query ist nicht unterstützt. Definieren Sie id Eigenschaft des Gitters als id:ABC_GRID.

Ext.getCmp("ABC_GRID").reconfigure(this.store) 
+0

Also, wo ich meine Raster dort sollte ich leere im Geschäft lassen? – David

+0

Sorry, ich habe versucht, aber es funktioniert nicht. Nicht einmal beim Debugger aufhören. – David

+0

Ext.ComponentQuery.query ist nicht verfügbar in EXTJS 3. – David

-1

Anstatt Aufruf This.store Sie anrufen können grid.getview(). GetStore(), werden Sie den Speicher des Gitters, wo Sie die Daten laden möchten.

Verwandte Themen