ExtJS - Пользовательский модуль визуализации столбцов на TreeGrid не запускается - PullRequest
4 голосов
/ 25 января 2011

У меня есть ExtJS TreeGrid, и я пытаюсь добавить пользовательский рендер в определенный столбец.К сожалению, это не работает - событие не запускается и предупреждения не выдаются.Я не смог найти API для TreeGrid.Кто-нибудь еще испытывал это?

Вот код:

    var tree = new Ext.ux.tree.TreeGrid({
        title: 'My Tree Grid',
        loader: treeLoader,
        columns:[{
            header: 'Title',
            dataIndex: 'title',
            width: 500
        },{
            header: 'Testing',
            width: 100,
            dataIndex: 'testing',
            renderer: function(value) {
              console.log('Test');
            },
            align: 'center'
        }]
     });

Спасибо!

1 Ответ

5 голосов
/ 25 января 2011

Для TreeGrid нет API, потому что это расширение пользователя (Ext.ux). Вам придется взглянуть на исходный код для получения дополнительной информации. Если у вас нет источника в вашем проекте, перейдите на следующую страницу:

http://dev.sencha.com/deploy/dev/examples/treegrid/treegrid.html

и нажмите «Просмотр источника» Ctrl + U. Оттуда вы можете связаться с TreeGrid.js и другими файлами поддержки js.

Я заметил, что TreeGrid расширяет TreePanel, что, в свою очередь, расширяет старый Panel. Похоже, что нет никаких ссылок на GridPanel, поэтому я не верю, что есть какой-либо визуализатор столбцов, как вы ожидаете, если бы использовали этот компонент. Из того, что я понял, пример (tree-grid.js) вместо этого использует XTemplate для рендеринга данных столбца:

    var tree = new Ext.ux.tree.TreeGrid({
        title: 'Core Team Projects',
        width: 500,
        height: 300,
        renderTo: Ext.getBody(),
        enableDD: true,

        columns:[{
            header: 'Task',
            dataIndex: 'task',
            width: 230
        },{
            header: 'Duration',
            width: 100,
            dataIndex: 'duration',
            align: 'center',
            sortType: 'asFloat',
            // ================================== //
            // this acts as your column renderer
            tpl: new Ext.XTemplate('{duration:this.formatHours}', {
                formatHours: function(v) {
                    if(v < 1) {
                        return Math.round(v * 60) + ' mins';
                    } else if (Math.floor(v) !== v) {
                        var min = v - Math.floor(v);
                        return Math.floor(v) + 'h ' + Math.round(min * 60) 
                            + 'm';
                    } else {
                        return v + ' hour' + (v === 1 ? '' : 's');
                    }
                }
            })
            // ================================== //
        },{
            header: 'Assigned To',
            width: 150,
            dataIndex: 'user'
        }],

        dataUrl: 'treegrid-data.json'
    });

Попробуйте использовать XTemplate для своих целей. Если это не отвечает вашим потребностям, вам придется предоставить больше информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...