Я пытаюсь вызвать ajax внутри события beforenodedrop, и в случае успеха я хочу продолжать манипулировать деревом.Но событие отменяется.Как я могу вызвать ajax внутри beforenodedrop.
Спасибо за вашу помощь.
Мой код здесь:
// Moving nodes from data grid to tree
beforenodedrop : {
fn : function(e) {
e.cancel = true;
enableBtnEditAndDelete(false);//Disabling those btns edit and delete from grid toolbar
// e.data.selections is the array of selected records from grid
if (Ext.isArray(e.data.selections)) {
// setup dropNode (it can be array of nodes)
e.dropNode = [];
if(e.target.id != this.root.id) {
processBarWin.show();
var newParentId = e.target.leaf ? e.target.parentNode.attributes.idFolder : e.target.attributes.idFolder;
var idsToUpdate = '';
//Obj to log
var objLog = document.getElementById('log');
for ( var i = 0; i < e.data.selections.length; i++) {
// get record from selectons
var r = e.data.selections[i];
idsToUpdate += i > 0 ? ', ' + r.get('id') : r.get('id');
nodesToCreate[i] = this.loader.createNode({
text : r.get('description'),
leaf : true,
editable: false,
idIdea : r.get('id'),
description : r.get('description'),
content : r.get('content'),
idFolder : r.get('idFolder'),
insertDate : r.get('insertDate'),
updateDate : r.get('updateDate'),
qtip : r.get('content').substring(0, 50) + "..."
});
}
objLog.innerHTML = objLog.innerHTML + "after for<br />";
// reset cancel flag, permit to drop items
e.cancel = false;
for ( var i = 0; i < e.data.selections.length; i++) {
// get record from selectons
var r = e.data.selections[i];
// create node from record data
e.dropNode.push(this.loader.createNode({
text : r.get('description'),
leaf : true,
editable: false,
idIdea : r.get('id'),
description : r.get('description'),
content : r.get('content'),
idFolder : r.get('idFolder'),
insertDate : r.get('insertDate'),
updateDate : r.get('updateDate'),
qtip : r.get('content').substring(0, 50) + "..."
}));
}
Ext.Ajax.request({
url: 'Action/deuErro.php',
method: 'POST',
params: {
action: 'updateIdeaParent',
ids : idsToUpdate,
idFolder : newParentId
},
success: function(){
objLog.innerHTML = objLog.innerHTML + "success<br />";
for ( var i = 0; i < e.data.selections.length; i++) {
var r = e.data.selections[i];
gridStore.remove(r);
}
processBarWin.hide();
},
failure: function(){
objLog.innerHTML = objLog.innerHTML + "failure<br />";
processBarWin.hide();
yaMsgError(a.result.errors.title, a.result.errormsg);
return false;
}
});
} else {
yaMsgWarn(msgActionNotAllowed);
return false;
}
} else { // from tree, not from the grid
//nothing here
}
// We want Ext to complete the drop, thus return true
return true;
}
}
С наилучшими пожеланиями, Tiago