2016-06-07 5 views
-1

Я пытаюсь реализовать функциональность в сетке, где, когда мы нажимаем кнопку (влево, вправо, перемотка вперед, вперед) нам нужно переместить положение прокрутки (горизонтальное) в конкретное положение, так как нам нужно переместить положение scroll. Я могу реализовать все, кроме только левой навигации. есть идеи?Extjs 5: нужно переместить положение прокрутки (горизонтальное) в конкретное положение (в столбце участника) в сетке

+0

поместить код, чтобы сделать ваш вопрос лучше –

+0

Используйте 'scrollByDeltaX', [это ExtJS4 пример] (http://stackoverflow.com/questions/13545674/how-to-scroll-extjs-4-grid-horizontally), но он также работает с ExtJS5. –

+0

Привет .. спасибо за ответ .. но scrollByDeltax работает только для правильного направления. Если я хочу двигаться влево, тогда он работает не так, как ожидалось ... – user3629299

ответ

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