ExtJS: добавить флажок "на лету" - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть собственный класс, который расширяет Ext.grid.GridPanel.Я хотел бы иметь столбец флажков ( пример, который использует Ext.ux.grid.CheckboxColumn - только то, что мне нужно).Моя цель - использовать его с предварительно сгенерированным объектом конфигурации, включая модель столбцов (она генерируется скриптом PHP), поэтому я перегрузил метод initComponent , чтобы добавить в него столбец:

MyGrid  =   Ext.extend
(
    Ext.grid.GridPanel
    ,{
        initComponent   :   function()
        {
            this.columns.push({
                xtype       : 'checkcolumn'
                ,header     : 'Show on map ?'
                ,dataIndex  : 'showonmap'
                ,width      : 130
            });

            Ext.apply(this, {columns:this.columns});
            MyGrid.superclass.initComponent.apply(this, arguments);
        }
    }
);

Такая вещь работала с компонентом ActionColumn, но этот код не работает, потому что он не может найти конструктор (возможно, для CheckColumn).

Как мне изменить мой код или CheckColumn, чтобы эта штука работала?

Спасибо заранее!

1 Ответ

2 голосов
/ 16 апреля 2011

Если конструктор не может быть найден, вы не должны должным образом импортировать класс CheckColumn. Попробуйте это, чтобы увидеть, можно ли найти конструктор напрямую:

MyGrid  =   Ext.extend
(
    Ext.grid.GridPanel
    ,{
        initComponent   :   function()
        {
            this.columns.push(new Ext.ux.grid.CheckColumn({
                ,header     : 'Show on map ?'
                ,dataIndex  : 'showonmap'
                ,width      : 130
            }));

            Ext.apply(this, {columns:this.columns});
            MyGrid.superclass.initComponent.apply(this, arguments);
        }
    }
);

Если вы получите исключение, которое Ext.ux.grid.CheckColumn is not a constructor, то вы точно знаете, что классы недоступны. Убедитесь, что вы правильно включили класс, и вы можете проверить с помощью Firebug, что источник действительно был включен и доступен.

...