dnd_grid_to_grid.js
上传用户:dawnssy
上传日期:2022-08-06
资源大小:9345k
文件大小:4k
源码类别:

JavaScript

开发平台:

JavaScript

  1. /*!
  2.  * Ext JS Library 3.1.0
  3.  * Copyright(c) 2006-2009 Ext JS, LLC
  4.  * licensing@extjs.com
  5.  * http://www.extjs.com/license
  6.  */
  7. Ext.onReady(function(){
  8.     var myData = {
  9. records : [
  10. { name : "Rec 0", column1 : "0", column2 : "0" },
  11. { name : "Rec 1", column1 : "1", column2 : "1" },
  12. { name : "Rec 2", column1 : "2", column2 : "2" },
  13. { name : "Rec 3", column1 : "3", column2 : "3" },
  14. { name : "Rec 4", column1 : "4", column2 : "4" },
  15. { name : "Rec 5", column1 : "5", column2 : "5" },
  16. { name : "Rec 6", column1 : "6", column2 : "6" },
  17. { name : "Rec 7", column1 : "7", column2 : "7" },
  18. { name : "Rec 8", column1 : "8", column2 : "8" },
  19. { name : "Rec 9", column1 : "9", column2 : "9" }
  20. ]
  21. };
  22. // Generic fields array to use in both store defs.
  23. var fields = [
  24. {name: 'name', mapping : 'name'},
  25. {name: 'column1', mapping : 'column1'},
  26. {name: 'column2', mapping : 'column2'}
  27. ];
  28.     // create the data store
  29.     var firstGridStore = new Ext.data.JsonStore({
  30.          fields : fields,
  31. data   : myData,
  32. root   : 'records'
  33.     });
  34. // Column Model shortcut array
  35. var cols = [
  36. { id : 'name', header: "Record Name", width: 160, sortable: true, dataIndex: 'name'},
  37. {header: "column1", width: 50, sortable: true, dataIndex: 'column1'},
  38. {header: "column2", width: 50, sortable: true, dataIndex: 'column2'}
  39. ];
  40. // declare the source Grid
  41.     var firstGrid = new Ext.grid.GridPanel({
  42. ddGroup          : 'secondGridDDGroup',
  43.         store            : firstGridStore,
  44.         columns          : cols,
  45. enableDragDrop   : true,
  46.         stripeRows       : true,
  47.         autoExpandColumn : 'name',
  48.         title            : 'First Grid'
  49.     });
  50.     var secondGridStore = new Ext.data.JsonStore({
  51.         fields : fields,
  52. root   : 'records'
  53.     });
  54.     // create the destination Grid
  55.     var secondGrid = new Ext.grid.GridPanel({
  56. ddGroup          : 'firstGridDDGroup',
  57.         store            : secondGridStore,
  58.         columns          : cols,
  59. enableDragDrop   : true,
  60.         stripeRows       : true,
  61.         autoExpandColumn : 'name',
  62.         title            : 'Second Grid'
  63.     });
  64. //Simple 'border layout' panel to house both grids
  65. var displayPanel = new Ext.Panel({
  66. width        : 650,
  67. height       : 300,
  68. layout       : 'hbox',
  69. renderTo     : 'panel',
  70. defaults     : { flex : 1 }, //auto stretch
  71. layoutConfig : { align : 'stretch' },
  72. items        : [
  73. firstGrid,
  74. secondGrid
  75. ],
  76. bbar    : [
  77. '->', // Fill
  78. {
  79. text    : 'Reset both grids',
  80. handler : function() {
  81. //refresh source grid
  82. firstGridStore.loadData(myData);
  83. //purge destination grid
  84. secondGridStore.removeAll();
  85. }
  86. }
  87. ]
  88. });
  89. // used to add records to the destination stores
  90. var blankRecord =  Ext.data.Record.create(fields);
  91.         /****
  92.         * Setup Drop Targets
  93.         ***/
  94.         // This will make sure we only drop to the  view scroller element
  95.         var firstGridDropTargetEl =  firstGrid.getView().scroller.dom;
  96.         var firstGridDropTarget = new Ext.dd.DropTarget(firstGridDropTargetEl, {
  97.                 ddGroup    : 'firstGridDDGroup',
  98.                 notifyDrop : function(ddSource, e, data){
  99.                         var records =  ddSource.dragData.selections;
  100.                         Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store);
  101.                         firstGrid.store.add(records);
  102.                         firstGrid.store.sort('name', 'ASC');
  103.                         return true
  104.                 }
  105.         });
  106.         // This will make sure we only drop to the view scroller element
  107.         var secondGridDropTargetEl = secondGrid.getView().scroller.dom;
  108.         var secondGridDropTarget = new Ext.dd.DropTarget(secondGridDropTargetEl, {
  109.                 ddGroup    : 'secondGridDDGroup',
  110.                 notifyDrop : function(ddSource, e, data){
  111.                         var records =  ddSource.dragData.selections;
  112.                         Ext.each(records, ddSource.grid.store.remove, ddSource.grid.store);
  113.                         secondGrid.store.add(records);
  114.                         secondGrid.store.sort('name', 'ASC');
  115.                         return true
  116.                 }
  117.         });
  118. });