Немного улучшил ситуацию. В базовой дропзоне использовал функцию - заглушку:
isPositionValid: function(overRecord, draggingRecords, pos){
var
me = this,
valid = !Ext.Array.contains(draggingRecords, overRecord) &&
( pos === 'before' && !me.containsRecordAtOffset(draggingRecords, overRecord, -1) ||
pos === 'after' && !me.containsRecordAtOffset(draggingRecords, overRecord, 1)
);
// some additional validation here
return valid && me.validateExtended(overRecord, draggingRecords, pos);
},
// must be re-defined in shildren
validateExtended: function(overRecord, draggingRecords, pos){
return true;
},
При подключении плагина заглушку переписываю:
plugins: {
ptype: 'gridviewdragdrop',
dragText: '## Drag and drop to reorganize',
dropZone: {
validateExtended: function(overRecord, draggingRecords, pos){
// disable draggind to other parent grous
return overRecord.get('SafetyRoundMeasurePoint_ID') == draggingRecords[0].get('SafetyRoundMeasurePoint_ID');
}
}
},
Так все выглядит лучше, но некоторая засада имеет место по прежнему. Если вдруг обновится фреймворк, и метод
positionIndicator будет переписан, то может выйти бяка. Кроме того, остался открытым вопрос о драг тексте: как можно его менять динамически?