2017-04-17 13 views
0

I Ext.grid.GridPanelは、データ用にExt.data.JsonStoreに、グリッドスペック用にExt.grid.ColumnModelにリンクされています。複数のデータソースを持つパネルを作成するextjs

私は10列あります。それらのうち9つがjsonストアによって占有されています。データが動的で残りのように読み込むことができないため、最後の列で問題が発生しています。

この列では、最初に他のデータストアをロードする必要があります。これらの列からデータを抽出し、そのデータをjsonストアの列に挿入して10列のグリッドに表示する必要があります。

`

var JSONSTORE = new Ext.data.JsonStore ({ 
    // Store Configs 
     autoLoad: true, 
     url: 'json_data_call.php', 
     baseParams: {action: 'read'}, 
    // Reader Configs 
     storeId: 'store1', 
     idProperty: 'store1', 
     root: 'data', 
     sortInfo: { 
      field: 'field_name', 
      direction: 'ASC' 
     }, 
     fields: [ 
      {name : 'field_name', type: 'string'}, 
      {name : 'field_name', type: 'string'}, 
      {name : 'field_name', type: 'int'} 
     ], 
     autoSave: false 
    }); 

JsonStore.on('exception',JsonSave,this); 

JsonStore.on('load',function(){ 


    autoDiagnosticsJsonStore.warn_err_loaded = true; 

    if(autoDiagnosticsJsonStore.warn_err_loaded) 
    { 
     console.log(autoDiagnosticsJsonStore); 
    }else{ 
     console.log('ERROR'); 
    } 

}); 


/* 
* ColumnModel 
*/ 
var ColumnModel = new Ext.grid.ColumnModel ({ 
    defaults: { menuDisabled: true }, 
    columns: [ 
     {header: 'Type', hideable: false, sortable: false, dataIndex: 'ERR_TYPE', 
      renderer: function(value, metaData, record, rowIndex, colIndex, store) { 
       if (record.data.ERR_TYPE == 'WARNING') { 
        metaData.css = 'cog_bg_orange'; 
       } 
       if (record.data.ERR_TYPE == 'ERROR') { 
        metaData.css = 'cog_bg_red'; 
       } 
       return value; 
      } 
     }, 
     {header: 'Item Found', hideable: false, sortable: false, dataIndex: 'ERR_MSG', width: 900, css: 'font-family: lucida console, monospace;'} 
    ] 
}); 

var errorGrid = new Ext.grid.GridPanel({ 
    id: 'nmerrorGrid', 
    enableColumnMove: false, 
    autoHeight: true, 
    xtype: 'grid', 
    ds: JsonStore, 
    cm: ColumnModel, 
    sm: new Ext.grid.RowSelectionModel({singleSelect: true}) 
}); 


$error_panel = " 

var errorPanel = new Ext.Panel({ 
    title: 'field_name', 
    collapsible: true, 
    anchor: '98%', 
    height: 300, 
    frame: true, 
    layout: 'fit', 
    items: [ errorGrid ] 
});` 

答えて

0

私はこれを正しく理解していれば、あなたは店でレコードの別のフィールドを作成しようとしている、と店が人口になると、そのフィールドが計算されます。

ストアのレコードにmodelを作成する場合は、レコードの値を使用してcalculatedのフィールドを作成できます。

例:

Ext.define('User', { 
    extend: 'Ext.data.Model', 
    fields: [{ 
     name: 'firstName', 
     type: 'string' 
    },{ 
     name: 'lastName', 
     type: 'string' 
    },{ 
     name: 'fullName', 
     calculate: function (data) { 
     return data.firstName + ' ' + data.lastName; 
     } 
    }] 
}); 

フィールド 'のfullName' 既存のレコードの値を使用して構築されています。モデルfieldsの代わりにモデルを店舗に追加することができます(model: 'User')。

+0

完璧なこれは...ありがとう – smanunta

関連する問題