Как предотвратить прокрутку сетки extjs при нажатии на ячейку? - PullRequest
9 голосов
/ 19 мая 2011

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

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

Спасибо

Ответы [ 4 ]

11 голосов
/ 13 сентября 2011

У меня была такая же проблема, и я нашел решение на доске обсуждений 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

2 голосов
/ 10 сентября 2015

У меня была такая же проблема с 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()
});
2 голосов
/ 19 марта 2012

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

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);
    }
});
1 голос
/ 19 мая 2011

это может быть похоже на эту проблему: В IE7 первый щелчок по сетке заставляет ExtJS Ext.grid.GridPanel перейти на верх страницы try position: относительный; zoom: 1 включенконтейнер вокруг сетки, чтобы дать ему hasLayout

...