Extjs - 拖放限制

时间:2016-06-16 12:48:01

标签: extjs drag-and-drop

如何限制拖动操作不超过一定的边界。在extjs(版本3)中是否有任何配置,我看到,使用了Ext.dd.DragZone类。但我不确定什么是可用性。我看到了一个方法dropNotAllowed。这是必须使用的方法吗?如果是的话,我应该如何使用它?请提供一些例子。

我正在寻找类似于(jquery UI的可拖动包容属性)的东西

http://docs.sencha.com/extjs/3.4.0/#!/api/Ext.dd.DragZone-cfg-dropNotAllowed

我尝试使用设置的X和Y约束,但它没有解决问题:

abc.prototype.initDrag = function(v) {
    v.dragZoneobj = new Ext.dd.DragZone(v.getEl(), {
                getDragData : function(e) {
                    var sourceEl = e.getTarget(v.itemSelector, 10);
//                    sourceEl.setXConstraint( 0, 10 );
                    var t = e.getTarget();
                    var rowIndex = abc.grid.getView().findRowIndex(t);
                    var columnIndex = abc.grid.getView().findCellIndex(t);
                    if ((rowIndex !== false) && (columnIndex !== false)) {
                        if (sourceEl) {
                            abc.isDragged = true;
                            abc.scriptGrid.isDraggableForObject = false;
                            abc.scriptGrid.dragRowIndex = false;
                            d = sourceEl.cloneNode(true);
                            d.id = Ext.id();
                            d.textContent = sourceEl.innerHTML;
//                            d.setXConstraint( 0, 10 );
//                            d.setYConstraint( 0, 10 );
                            return {
                                ddel : d,
                                sourceEl : d,
                                sourceStore : v.store
                            }
                        }
                    }   
                },
                getRepairXY : function() {
                    return this.dragData.repairXY;
                },          
            });
}

上述代码中都注释了两者。上面的代码在渲染面板时启动。

编辑: 如何使用这些setX和setYcontraints?

1 个答案:

答案 0 :(得分:0)

默认情况下,可以在屏幕上的任何位置拖动元素。在文档中,有两种方法setXConstraint( iLeft, iRight, iTickSize)setYConstraint( iUp, iDown, iTickSize ) 这两种方法用于设置限制元素的垂直行程和角行程。