Полоса прокрутки в панели дерева extjs не работает - PullRequest
2 голосов
/ 19 июля 2011

Иногда случается, что полоса прокрутки моей панели дерева больше не работает.Хотя все еще возможно перемещать полосу прокрутки, дерево больше не движется вообще.Это происходит со мной и в Firefox, и в Chrome.

Вот источник моей древовидной панели:

</p>

<p>var treeStore = Ext.create('Ext.data.TreeStore', {
    proxy: {
        type: 'ajax',
        url: '../tree.pl'
    }
});</p>

<p>var tree = Ext.create('Ext.tree.Panel', {
    store: treeStore,
    renderTo: 'tree',
    title: 'Tree',
    width: 400,
    height: 450,
    rootVisible:false,
    dockedItems: [{
        xtype: 'toolbar',
        dock: 'bottom',
        items: [
        {
            xtype: 'tbspacer',
            width: 340
        },
        {
            text: 'Search',
            handler: function(){
                        names = [];
                        Ext.Array.each(tree.getView().getChecked(), function(rec){
                            names.push(rec.get('text'));
                        });</p>

<pre>                    resultStore.load({
                        params:{
                            search_type: 'tree',
                            tree_nodes: names.join('II'),
                        }
                    });
                }
    }
    ]
}]

});

Ответы [ 4 ]

8 голосов
/ 07 ноября 2011

У меня была такая же проблема. Они используют собственную полосу прокрутки, и она довольно глючная (особенно в Chrome). Чтобы удалить пользовательский скроллер, добавьте в конфигурацию следующее:

var tree = Ext.create('Ext.tree.Panel', {
  scroll          : false,
  viewConfig      : {
    style           : { overflow: 'auto', overflowX: 'hidden' }
  },
  // ...
});

Я не пробовал это для панели дерева. Но он отлично работал для gridpanel (поскольку и дерево, и grid являются только расширениями Ext.panel. Таблица должна работать и для treepanel).

4 голосов
/ 07 ноября 2011

Пользовательские скроллеры будут заменены на собственную прокрутку снова в Ext 4.1. Виртуализированные скроллеры были предназначены для поддержки бесконечной прокрутки, блокировки столбцов и т. Д., Но я верю, что в 4.1 им удалось решить их и при этом сохранить собственные полосы прокрутки. Я был бы удивлен, если бы текущие проблемы в 4.0.x когда-либо были решены из-за этого.

0 голосов
/ 18 апреля 2012

Я использую Ext 4.0.7.

прокрутка: правда

у меня работает. Но по какой-то причине кто-то добавил:

макет: якорь

к конфигурации панели дерева, из-за которой она перестала работать. Если вы обнаружите, что scroll: true не работает, попробуйте посмотреть, добавил ли кто-то макет, и удалите его.

Надеюсь, это поможет.

0 голосов
/ 23 февраля 2012

В EXT 4.0, расположенном в файле ext-all.css в ресурсах основной библиотеки, реальная причина, по которой это не работает. Кодеры этого файла CSS решили, что ячейка сетки должна иметь overflow: hidden; (около строки 3324):

.x-grid-cell {
    overflow: hidden;
    font: normal 13px tahoma, arial, verdana, sans-serif;
    user-select: none;
    -o-user-select: none;
    -ms-user-select: none;
    -moz-user-select: -moz-none;
    -webkit-user-select: none;
    cursor: default
}

.x-grid-cell-inner {
    overflow: hidden;
    -o-text-overflow: ellipsis;
    text-overflow: ellipsis;
    padding: 3px 6px;
    white-space: nowrap
}

Лучше всего установить переполнение для наследования обоих классов, и эта проблема волшебным образом исчезла.

Единственное, что осталось - это граница таблицы сетки, но об этом можно позаботиться, просто поместив стили CSS в ваш CSS. Советую не помещать его в файл ext-all.css.

.x-grid-table {
    border: none !important;
    width: auto !important;     
}

Просто помните, что это изменит его для любого стиля, который использует .x-grid-cell.

...