Extjs Grid 내에서 Drag & Drop 하기

2011. 11. 18. 10:14프로그래밍/ExtJS

    fn: function(grid) {
				 var ddrow = new Ext.dd.DropTarget(grid.container, {
						       ddGroup : 'tableGridDD',
						       copy:false,
						       notifyDrop : function(dd, e, data){
						       var ds = grid.store;						                                 
						       var sm = grid.getSelectionModel();
						       var rows = sm.getSelections();
						       if(dd.getDragData(e)) {
						               var cindex=dd.getDragData(e).rowIndex;
						                if(typeof(cindex) != "undefined") {
						                      for(i = 0; i <  rows.length; i++) {
						                          ds.remove(ds.getById(rows[i].id));
						                               }
						                       ds.insert(cindex,data.selections);	
								       grid.view.refresh();                             
						                       sm.clearSelections();  
						                   }
						                }
						           }
					 })
						                  
		         }
Grid 랜더링 시 위 함수를 추가해보자.
그리드의 ddGroup 은 여기 dnd ddGroup 과 동일해야한다.
그리고 위에 grid.view.refresh() 함수는 그리드내에 new Ext.grid.RowNumberer() 값 때문에 해준것이다.
해주지 않으면 숫자가 뒤죽박죽이 된다.