dnd_grid_to_grid.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. Ext.require([
  2. 'Ext.grid.*',
  3. 'Ext.data.*',
  4. 'Ext.dd.*'
  5. ]);
  6. Ext.define('DataObject', {
  7. extend: 'Ext.data.Model',
  8. fields: ['name', 'column1', 'column2']
  9. });
  10. Ext.onReady(function(){
  11. var myData = [
  12. { name : "Rec 0", column1 : "0", column2 : "0" },
  13. { name : "Rec 1", column1 : "1", column2 : "1" },
  14. { name : "Rec 2", column1 : "2", column2 : "2" },
  15. { name : "Rec 3", column1 : "3", column2 : "3" },
  16. { name : "Rec 4", column1 : "4", column2 : "4" },
  17. { name : "Rec 5", column1 : "5", column2 : "5" },
  18. { name : "Rec 6", column1 : "6", column2 : "6" },
  19. { name : "Rec 7", column1 : "7", column2 : "7" },
  20. { name : "Rec 8", column1 : "8", column2 : "8" },
  21. { name : "Rec 9", column1 : "9", column2 : "9" }
  22. ];
  23. // create the data store
  24. var firstGridStore = Ext.create('Ext.data.Store', {
  25. model: 'DataObject',
  26. data: myData
  27. });
  28. // Column Model shortcut array
  29. var columns = [
  30. {text: "Record Name", flex: 1, sortable: true, dataIndex: 'name'},
  31. {text: "column1", width: 70, sortable: true, dataIndex: 'column1'},
  32. {text: "column2", width: 70, sortable: true, dataIndex: 'column2'}
  33. ];
  34. // declare the source Grid
  35. var firstGrid = Ext.create('Ext.grid.Panel', {
  36. multiSelect: true,
  37. viewConfig: {
  38. plugins: {
  39. ptype: 'gridviewdragdrop',
  40. dragGroup: 'firstGridDDGroup',
  41. dropGroup: 'secondGridDDGroup'
  42. },
  43. listeners: {
  44. drop: function(node, data, dropRec, dropPosition) {
  45. var dropOn = dropRec ? ' ' + dropPosition + ' ' + dropRec.get('name') : ' on empty view';
  46. Ext.example.msg("Drag from right to left", 'Dropped ' + data.records[0].get('name') + dropOn);
  47. }
  48. }
  49. },
  50. store : firstGridStore,
  51. columns : columns,
  52. stripeRows : true,
  53. title : 'First Grid',
  54. margins : '0 2 0 0'
  55. });
  56. var secondGridStore = Ext.create('Ext.data.Store', {
  57. model: 'DataObject'
  58. });
  59. // create the destination Grid
  60. var secondGrid = Ext.create('Ext.grid.Panel', {
  61. viewConfig: {
  62. plugins: {
  63. ptype: 'gridviewdragdrop',
  64. dragGroup: 'secondGridDDGroup',
  65. dropGroup: 'firstGridDDGroup'
  66. },
  67. listeners: {
  68. drop: function(node, data, dropRec, dropPosition) {
  69. var dropOn = dropRec ? ' ' + dropPosition + ' ' + dropRec.get('name') : ' on empty view';
  70. Ext.example.msg("Drag from left to right", 'Dropped ' + data.records[0].get('name') + dropOn);
  71. }
  72. }
  73. },
  74. store : secondGridStore,
  75. columns : columns,
  76. stripeRows : true,
  77. title : 'Second Grid',
  78. margins : '0 0 0 3'
  79. });
  80. //Simple 'border layout' panel to house both grids
  81. var displayPanel = Ext.create('Ext.Panel', {
  82. width : 650,
  83. height : 300,
  84. layout : {
  85. type: 'hbox',
  86. align: 'stretch',
  87. padding: 5
  88. },
  89. renderTo : 'panel',
  90. defaults : { flex : 1 }, //auto stretch
  91. items : [
  92. firstGrid,
  93. secondGrid
  94. ],
  95. dockedItems: {
  96. xtype: 'toolbar',
  97. dock: 'bottom',
  98. items: ['->', // Fill
  99. {
  100. text: 'Reset both grids',
  101. handler: function(){
  102. //refresh source grid
  103. firstGridStore.loadData(myData);
  104. //purge destination grid
  105. secondGridStore.removeAll();
  106. }
  107. }]
  108. }
  109. });
  110. });