2011-05-19 3 views
8

В настоящее время я использую компонент grid с Extjs 4 на основе редактируемого примера сетки. Я хотел бы иметь ссылку, связанную с каждой ячейкой, так что, когда я нажимаю на ячейку, она переводит меня на другую страницу. Однако, когда есть вертикальная прокрутка, которая нажимается на странице при нажатии на ссылку.Как предотвратить прокрутку сетки extjs при нажатии на ячейку?

например. попробуйте уменьшить размер http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/cell-editing.html, первый щелчок по сетке прокручивает страницу так, чтобы сетка была в центре и событие проглотило. Вам нужно нажать еще раз, чтобы зарегистрировать событие cellclick. Это происходит только в IE (я использую версию 8). Хорошей новостью является то, что этого не происходит с другими браузерами, может быть, это ошибка, и есть ли способ предотвратить это первое действие прокрутки?

Благодаря

+1

У меня такая же проблема, в Chrome 12 и ExtJS 4.0.2. Это происходит только тогда, когда сетка выше страницы. – finnsson

ответ

10

I've была такая же проблема и нашли решение на доске объявлений Sencha.

Добавление этого кода сделал работу для меня:

selModel: Ext.create('Ext.selection.Model', { listeners: {} }), 

Дополнительная информация: http://www.sencha.com/forum/showthread.php?133983-How-to-prevent-extjs-grid-from-scrolling-when-clicking-on-a-cell

+0

Я замечаю, что Ext 4.1.1 будет работать для предотвращения прокрутки в браузерах на основе WebKit, но не в IE. –

0

это может быть похоже на эту проблему: In IE7 the first click on a grid causes an ExtJS Ext.grid.GridPanel to jump to the top of the page попытка положение: относительная; зум: 1 на контейнере вокруг сетки, чтобы дать его hasLayout

+0

, к сожалению, применяя то же исправление, что и в версии 3 из doj snj работы Extjs в 4. – user465374

2

Попробуйте этот патч

Ext.override(Ext.selection.RowModel, { 
    onRowMouseDown: function(view, record, item, index, e) { 
     //IE fix: set focus to the first DIV in selected row 
     Ext.get(item).down('div').focus(); 

     if (!this.allowRightMouseSelection(e)) { 
      return; 
     } 

     this.selectWithEvent(record, e); 
    } 
}); 
+0

это работает для меня: не работает> http://stackoverflow.com/questions/3784014/grid-scrolls-to-top-when-any-row-is-clicked-in-ext-js > не работает : https://www.sencha.com/forum/showthread.php?133983-How-to-prevent-extjs-grid-from-scrolling-when-clicking-on-a-cell – RAY

2

я имел такую ​​же проблему с ExtJS 4.2 сегодня и более ранние решения не работали для меня, используя эту конфигурацию в gridpanel, чтобы полностью решить проблему:

viewConfig: { 
    focusRow: Ext.emptyFn 
} 

Например:

Ext.create('Ext.grid.Panel', { 
    title: 'Simpsons', 
    store: Ext.data.StoreManager.lookup('simpsonsStore'), 
    viewConfig: { 
     focusRow: Ext.emptyFn 
    } 
    columns: [ 
     { text: 'Name', dataIndex: 'name' }, 
     { text: 'Email', dataIndex: 'email', flex: 1 }, 
     { text: 'Phone', dataIndex: 'phone' } 
    ], 
    height: 200, 
    width: 400, 
    renderTo: Ext.getBody() 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^