Когда вы перетаскиваете элементы между разными компонентами или экземплярами компонента, необходимо обеспечить корректное отображение данных в целевом компоненте.
Свойство externalData принимает функцию, ответственную за перетаскивание (если перетаскиваете в другой компонент).
{
view:"tree",
drag:true,
select:true,
data:[],
externalData:grid2tree
};
Функция принимает два параметра - data и id:
Когда элемент перемещается в другой компонент, он сохраняет своё ID, если только в целевом компоненте такое ID не занято. Если же какой-либо элемент целевого компонента уже занял ID, то для перетаскиваемого элемента будет сгенерирован новый, а изначальный останется в функции.
Давайте представим приложение с двумя деревьями: DataView и DataTable. Набор данных дерева включает в себя элементы с data.value, в то время, как у DataView и DataTable есть поля data.title и data.rank. Чтобы разрешить перетаскивание в пределах целой группы, вам понадобятся две функции:
function tree2grid(data, id){
data.rank = data.rank || -1;
data.title = data.title || data.value;
return data;
}
Обратите внимание на оператор "или":
function grid2tree(data, id){
data.value = data.value || data.title;
return data;
}
В этом случае имеет значение только data.value. Дерево возмёт значение data.value у другого дерева или значение data.title у какой-либо из таблиц.
Related sample: Basic Drag-and-Drop