0

グリッド パネルの値をグループ化したい

以下はコードです:

var store = Ext.create('Ext.data.TreeStore', {
root: {
    expanded: true,
    children: [
        { text: "School Friends", expanded: true, children: [
            { text: "Mike", leaf: true, name: "Mike", email: "mike@stackoverflow.com", phone: "345-2222"},
            { text: "Laura", leaf: true, name: "Laura", email: "laura@stackoverflow.com", phone: "345-3333"}
        ] },
        { text: "Facebook Friend", expanded: true, children: [
            { text: "Steve", leaf: true, name: "Steve", email: "steve@stackoverflow.com", phone: "345-2222"},
            { text: "Lisa", leaf: true, name: "Lisa", email: "lisa@stackoverflow.com", phone: "345-3333"}
        ] },
    ]
}});

Ext.create('Ext.tree.Panel', {
title: 'All My Friends',
width: 200,
height: 150,
store: store,
rootVisible: false,
renderTo: Ext.getBody(),
listeners : {
        itemdblclick : function(tree, record, index){
            Ext.getStore('simpsonsStore').loadRawData([record.raw], true);
        }
}});
Ext.create('Ext.data.Store', {
storeId:'simpsonsStore',
fields:['name', 'email', 'phone'],
data:{'items':[
    { 'name': 'Bart',  "email":"bart@simpsons.com",  "phone":"555-222-1234" },
    { 'name': 'Homer', "email":"home@simpsons.com",  "phone":"555-222-1244"  },
    { 'name': 'Marge', "email":"marge@simpsons.com", "phone":"555-222-1254"  }
]},
proxy: {
    type: 'memory',
    reader: {
        type: 'json',
        root: 'items'
    }
}});

Ext.create('Ext.grid.Panel', {
title: 'Best Friends',
store: Ext.data.StoreManager.lookup('simpsonsStore'),
columns: [
    { text: 'Name',  dataIndex: 'name' },
    { text: 'Email', dataIndex: 'email', flex: 1 },
    { text: 'Phone', dataIndex: 'phone' }
],
height: 200,
width: 400,
renderTo: Ext.getBody()});

上記のコードから、ダブルクリックしてツリーパネルからグリッドパネルに値を取得できます。

ツリーパネルで同じリーフをダブルクリックすると、値をグループ化するための追加の列が必要です。

たとえば、Bart を 6 回ダブルクリックすると

Name  email              phonenumber     groupby(number of times)
Bart  bart@simpsons.com   555-222-1234    6

グリッド パネルに同じ値を追加しないでください。誰でも私を助けてください。

よろしく、 sreekanth

4

1 に答える 1

1

ストアのフィールドにカウント フィールドを追加する必要があります。次に、フィールドをグリッドに追加する必要があります。ツリーをダブルクリックしたら、ストアをチェックして、レコードが既に存在するかどうかを確認する必要があります。その場合は、count フィールドの値を変更します。それ以外の場合は、新しい行を追加します。

        itemdblclick: function (tree, record, index) {
            var s = Ext.getStore('simpsonsStore'),
                existingRecIdx = s.findBy(function (r) {
                    return r.get('email') === record.raw['email'];
                });

            if (existingRecIdx === -1) { //row not found
                record.raw.clickCt = 1;
                s.loadRawData([record.raw], true);
            } else {
                var r = s.getAt(existingRecIdx);
                r.data.clickCt++;
                grid.getView().refresh(); //once the data has changed
                                          //refresh the grid
            }
        }

http://jsfiddle.net/Kk7gL/を参照してください

于 2013-08-10T00:10:11.143 に答える