Code:
var AssignedStore = Ext.create('Ext.data.Store', {
model: 'LookupConfigRecord',
autoLoad: false,
proxy: Ext.create('Ext.data.proxy.Ajax', {
url: '/Data/AssignedValue/15',
reader: Ext.create('Ext.data.reader.Json', {
root: 'Data',
totalProperty: 'TotalSize'
})
})
});
// declare the source Grid
var TestDataAssignedGrid = Ext.create('Ext.grid.Panel', {
multiSelect: true,
id: 'TestDataAssignedGrid',
width: 300,
viewConfig: {
plugins: {
ptype: 'gridviewdragdrop',
dragGroup: 'TestData1AssignedGridGroup',
dropGroup: 'TestData1AvailableGridGroup'
},
listeners: {
beforedrop: function (node, data, dropRec, dropPosition) {
assignMask.show();
var IdArray=new Array();
for (i = 0; i < data.records.length; i++) {
IdArray[i]=data.records[i].get('ID');
}
}
}
},
store: TestData1AssignedStore,
columns: columns,
stripeRows: true,
title: 'Assigned',
margins: '0 5'
});
var AvailableStore = Ext.create('Ext.data.Store', {
model: 'LookupConfigRecord',
autoLoad: false,
proxy: Ext.create('Ext.data.proxy.Ajax', {
url: '/Data/AvailableValue/15',
reader: Ext.create('Ext.data.reader.Json', {
root: 'Data',
totalProperty: 'TotalSize'
})
})
});
// declare the source Grid
var TestData1AvailableGrid = Ext.create('Ext.grid.Panel', {
multiSelect: true,
id: 'TestData1AvailableGrid',
width: 300,
viewConfig: {
plugins: {
ptype: 'gridviewdragdrop',
dragGroup: 'TestData1AvailableGridGroup',
dropGroup: 'TestData1AssignedGridGroup'
},
listeners: {
beforedrop: function (node, data, dropRec, dropPosition) {
unassignMask.show();
var IdArray=new Array();
for (i = 0; i < data.records.length; i++) {
IdArray[i]=data.records[i].get('ID');
}
}
}
},
store: TestData1AvailableStore,
columns: columns,
stripeRows: true,
title: 'Available',
margins: '0 5'
});
var assignMask = new Ext.LoadMask(Ext.getBody(), {msg:"Assigning..."});
var unassignMask = new Ext.LoadMask(Ext.getBody(), {msg:"Un-Assigning..."});
var tabs = Ext.widget({
xtype: 'form',
id: 'tabForm',
layout: 'fit',
border: false,
bodyBorder: false,
items: {
xtype: 'tabpanel',
activeTab: 0,
defaults: {
layout: 'anchor'
},
items: [Ext.create('Ext.panel.Panel', {
title: 'Value Configuration',
layout: 'anchor',
items: [
Ext.create('Ext.panel.Panel', {
title: 'TestData',
layout: {
type: 'hbox',
align: 'stretch',
padding: 5
},
collapsible: true,
collapsed: true,
listeners: {
expand: function (p, eOpts) {
TestDataAssignedGrid.store.load();
TestData1AvailableGrid.store.load();
}
},
items: [TestData1AvailableGrid, Ext.create('Ext.panel.Panel', { html: '<div class="dd-controls"><a onclick="manualDragDrop(TestData1AvailableGrid, TestDataAssignedGrid, \'Assigned\', \'TestData\', \'15\', \'/Data/AssignValue\', \'/Data/UnassignValue\')" class="dd-fwd">fwd</a><a onclick="manualDragDrop(TestDataAssignedGrid, TestData1AvailableGrid, \'Unassigned\', \'TestData\', \'15\', \'/Data/UnassignValue\', \'/Data/UnassignValue\')" class="dd-back">back</a></div>', width: 100 }), TestDataAssignedGrid]
})]
})]
}
});
Typically there is more than one tab panel and each tab panel have multiple set of these grid-panel-grid objects.