2016-07-01 5 views
1

私はinitコンポーネントに自分のAjaxを書きましたが、すべてのデータがthis.storeにあります。 しかし、私は定義したグリッドに店舗の範囲を取得していません。私はAjaxの成功の括弧を閉じているので、私はそうではありません。正しい方法は何ですか? 私のコードは次のとおりです。私はグリッドを定義東パネルで同じINIT成分でグリッド内のストアの範囲を取得する方法

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 
         }, 
        }); 

。列は来ているが、店は出てこない。

グリッドコード我々はExt.ComponentQuery.queryとしてExt.getCmp()を使用する必要グリッドを取得し、その店舗ExtJSの3

について

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

を再構成this.storeにデータをロードした後

  { 
      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'はどのコンポーネントで呼び出されますか?あなたのグリッドコードはどこに定義されていますか? –

+0

グリッドもinitコンポーネントにあります。私はAjaxの成功の中だけで 'this.store'の範囲を失っています。 – David

答えて

0

ありますサポートされていません。グリッドのidプロパティをid:ABC_GRIDと定義する必要があります。

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

私はどこに私のグリッドを宣言どこ店で空白を残す必要がありますか? – David

+0

申し訳ありませんが、動作していませんでした。デバッガで停止することさえできません。 – David

+0

Ext.ComponentQuery.queryはEXTJS 3では使用できません。 – David

-1

this.storeを呼び出すのではなく、grid.getview()。getStore()を呼び出すと、データをロードするグリッドのストアが取得されます。

関連する問題