Reputation: 1371
I am new to extjs, could any one please help me in this.
When I double click an item in tree panel it should add in the grid panel without any change in treepanel.
Upvotes: 0
Views: 3325
Reputation: 277
You can place a listener for the 'itemdblclick' event on the treepanel to get the data out of the item's raw property that was double clicked. Then, with a reference to the underlying grid's store, just append that data object using the store's 'loadRawData' method. Here is a code sample based on Sencha's website samples:
var store = Ext.create('Ext.data.TreeStore', {
root: {
expanded: true,
children: [
{ text: "School Friends", expanded: true, children: [
{ text: "Mike", leaf: true, name: "Mike", email: "[email protected]", phone: "345-2222"},
{ text: "Laura", leaf: true, name: "Laura", email: "[email protected]", phone: "345-3333"}
] },
{ text: "Facebook Friend", expanded: true, children: [
{ text: "Steve", leaf: true, name: "Steve", email: "[email protected]", phone: "345-2222"},
{ text: "Lisa", leaf: true, name: "Lisa", email: "[email protected]", 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":"[email protected]", "phone":"555-222-1234" },
{ 'name': 'Homer', "email":"[email protected]", "phone":"555-222-1244" },
{ 'name': 'Marge', "email":"[email protected]", "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()
});
Upvotes: 1