2012-01-14 18 views
2

イベントのグリッドにデータを追加するには、extjsデザイナーにグリッドが組み込まれている必要があります。extjsグリッドを更新するイベント

したがって、ReceivedMsgをArgsで呼び出すと、グリッドの新しいレコードとして追加される配列データが送信されるはずです。

私はそれが外に出てjsonファイルをリフレッシュすることは望ましくありません。非常にネットワークフレンドリーではありません。

私は自分自身でサーバーのバックエンドを書いており、receiveMsgイベントを生成するためにWebソケットを実装しました。

どうすればいいですか?イベントは行くべき場所をここで

は次のとおりです。

/* 
* File: app/view/MyGridPanel.js 
* Date: Sat Jan 14 2012 14:58:07 GMT-0500 (Eastern Standard Time) 
* 
* This file was generated by Ext Designer version 1.2.2. 
* http://www.sencha.com/products/designer/ 
* 
* This file will be generated the first time you export. 
* 
* You should implement event handling and custom methods in this 
* class. 
*/ 

Ext.define('MyApp.view.MyGridPanel', { 
    extend: 'MyApp.view.ui.MyGridPanel', 

    initComponent: function() { 
     var me = this; 
     me.callParent(arguments); 
    } 
}); 


[ 
["Ace Supplies", "Emma Knauer", "555-3529"], 
["Best Goods", "Joseph Kahn", "555-8797"], 
["First Choice", "Matthew Willbanks", "555-4954"], 
["First Choice", "Matthew Willbanks", "555-4954"] 
] 

答えて

2

私が正しく質問を理解していれば、あなたはレコードとして追加したい配列が最初にその同じExt.data.Modelのインスタンスに変換する必要がありますグリッドが使用しています。次に、 "grid.store.insert()"メソッドを呼び出すことができます。あなたのグリッドは、このように「従業員」と呼ばれるモデルを使用している場合たとえば、:

// Grid data model 
Ext.define('Employee', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'name', type: 'int'}, 
     {name: 'email', type: 'string'}, 
     {name: 'start', type: 'date'}, 
     {name: 'salary', type: 'int'}, 
     {name: 'active', type: 'bool'} 
    ] 
}); 

はあなたのデータを持つ関数の外でモデルインスタンスを作成することができますし、可能な場合は、単に関数引数としてのことを渡しますか、唯一の配列(うまくいけばあなたが順序を設定することができます)、あなたは関数自体の内部モデルのインスタンスを作成することができるようデータを取得し、ここに示す:

// the function you wanted 
addRecord: function(myRecordArray) { 

    // Create a model instance 
    var r = Ext.create('Employee', { 
     name: myRecordArray[0], 
     email: myRecordArray[1], 
     start: myRecordArray[2], 
     salary: myRecordArray[3], 
     active: myRecordArray[4] 
    }); 

    // get the grid store and the number of records in it 
    var store = this.getStore(); 
    var maxIndex = store.getCount(); 

    // adds record to the end of the grid (args are: index, Ext.data.Model[]) 
    store.insert(maxIndex, r) 

} 

おそらく、このお店がある方法に応じて微調整する必要がありますセットアップが始まるはずです。

+0

どうすればいいですか? addRecord(Array)?外部機能からも? – BAR

+0

MyGridPanelオブジェクトから呼び出すことができます。私は前にデザイナを使用していないので、どうやってこれらを正確に作成するのか分かりませんが、MyGridPanel.addRecord(Array)のようなものでなければなりません... – Geronimo

+0

配列データの表示方法を追加しました – BAR

関連する問題