Extjs 5:需要将滚动(水平)位置移动到网格

时间:2016-06-07 01:53:01

标签: extjs extjs5

我正在尝试在网格中实现功能,当我们点击按钮(向左,向右,倒带,向前)时,我们需要将滚动(水平)位置移动到特定位置,就像我们需要移动滚动位置一样。我能够实现除左侧导航之外的所有内容。任何想法?

1 个答案:

答案 0 :(得分:0)

我不知道如何获得水平滚动位置或列位置,因此我从column.getPosition()计算它(它返回[x,y]位置)。

Ext.create('Ext.Button', {
    text     : 'right',
    renderTo : Ext.getBody(),
    listeners: {
            click: function() {
                var grid = Ext.getCmp('grid1');
                var columns = grid.getColumnManager().getColumns();

                var index = getCurrentColumn(columns, true);

                var p = columns[index+1].getPosition();

                grid.scrollByDeltaX(p[0]);

            }
        }

});

function getCurrentColumn(columns, isMovingRight)
{
    var index = 0;
    for (var i=0; i<columns.length; i++){

        // columns[i].getPosition() returns [x, y]
        if (columns[i].getPosition()[0] == 0){
            index = i;
            break;
        }

        if (columns[i].getPosition()[0] > 0){
            if (isMovingRight){
                index = i-1;
            }
            else{
                index = i;
            }
            break;
        }
    }

    return index;
}

/* function for click forward button */
function getNextPageColumn(columns, gridWidth)
{
    var index = -1;
    for (var i=0; i<columns.length; i++){
        if (columns[i].getPosition()[0] >= gridWidth){
            index = i;
            break;
        }
    }

    return index;
}

以编程方式滚动网格的示例 https://fiddle.sencha.com/#fiddle/1bkm