1

私はEXTJSに非常に慣れていないので、それがどのように機能するかを完全には理解していませんが、選択の結果であるグリッドを構築することができます(したがって、テーブルに直接マップされません)。このグリッドの列の1つはIDです。グリッドにチェックボックスも追加しました

    this.columns =
    [
        {
            header: 'Selected',
            dataIndex: 'Selected',
            xtype: 'checkcolumn'
        },
        ....rest of the columns

そして私のモデルには:

fields:
[   
    { name: 'Selected', type: 'bool' },
    { name: 'ID', type: 'int' },
     ...rest of the fields

必要なのは、ボタン(すでに追加されている)をクリックして、Selectedプロパティがtrueに設定されているIDのリストを取得することです。

どうすればそれができるのでしょうか?

4

1 に答える 1

3

それは簡単です(私があなたを正しく理解している場合)、グリッドにはこれらの選択を処理する選択モデルがあります。選択モデルを取得し、選択したすべてのレコードを取得する必要があります。

選択ごとに発生するitemclickselectionchangeイベントもあります。2番目は選択されたレコードの配列を示します。

また、Ext.selection.CheckboxModelも興味深いと思います。

編集:

OK私は上記のすべてがあなたが望むものではないと思いますが、おそらく非常に興味深いものです。必要なのは、store.each()で実行できるストアのすべてのレコードを反復処理することです。ボタンのスコープ内でこれを行うと、配列になります。例

var myGrid = Ext.getCmp('MyGrid');
var list = [];
myGrid.store.each(function(rec) { 
    if(rec.data.Selected)
        list.push(rec);
    return true;
});

現在選択されているレコード(モデル)を取得するには、次のようにします。

var myGrid = Ext.getCmp('MyGrid'),
    sm = myGrid.getSelectionModel(),
    selection = sm.getSelection(), // gives you a array of records(models)
    len = selection.length, 
    i = 0, 
    idList = []; 

for (; i<len; i++) { 
   idList.push(selection[i].data.ID); 
}
于 2012-09-26T15:22:53.573 に答える