DD2
//match && p ? pos : c.items.getCount() 计算出空降地点的行数
var overEvent = this.createEvent(dd, e, data, col, c,
match && p ? pos : c.items.getCount());
if(portal.fireEvent('validatedrop', overEvent) !== false &&
portal.fireEvent('beforedragover', overEvent) !== false){
// make sure proxy width is fluid
px.getProxy().setWidth('auto');
//正在拖动的面板原来的容器
var sourceCt = dd.panel.ownerCt;
//正在拖动的面板在原来容器中的行序号
var sourcePos = sourceCt.items.items.indexOf(dd.panel);
if(c == sourceCt)
{
px.moveProxy(p.el.dom.parentNode, match ? p.el.dom : null);
}
else
{
if(match)
{
var sourceDesPanel = c.items.items[pos];
sourceDesPanel.el.dom.parentNode.removeChild(sourceDesPanel.el.dom);
sourceCt.insert(sourcePos,sourceDesPanel);
c.insert(pos, dd.panel);
c.doLayout();
dd.proxy.getProxy().remove();
sourceCt.doLayout();
}
}
this.lastPos = {c: c, col: col, p: match && p ? pos : false};
//this.scrollPos = portal.body.getScroll();
portal.fireEvent('dragover', overEvent);
return overEvent.status;
}else{
return overEvent.status;
}
},
notifyOut : function(){
delete this.grid;
},
notifyDrop : function(dd, e, data){
delete this.grid;
if(!this.lastPos){
return;
}
var c = this.lastPos.c, col = this.lastPos.col, pos = this.lastPos.p;
var dropEvent = this.createEvent(dd, e, data, col, c,
pos !== false ? pos : c.items.getCount());
if(this.portal.fireEvent('validatedrop', dropEvent) !== false &&
this.portal.fireEvent('beforedrop', dropEvent) !== false){
//去除空降地点的代理,即界面上的虚框
dd.proxy.getProxy().remove();
//把正在拖动的这个面板从以前的容器中删除 再追加或插入到新的容器里
var sourceDom = dd.panel.el.dom;
var portal = dropEvent.portal;