Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.04.2010, 21:53
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Как добавить Ext.grid.CheckColumn в Ext.grid.EditorGridPanel динамически?
Дрозофилка:
Ext.onReady(function() {
    Ext.QuickTips.init();

    var 
        store = new Ext.data.JsonStore({
            url: "DataSource.aspx",
            root: "rows",
            idProperty: "Id",
            successProperty: "success",
            totalProperty: "count",
            fields: [
                { name: "Id", type: "int" },
                "Name",
                { name: "Salary", type: "float" },
                { name: "BirthDate", type: "date", dateFormat: "c" },
                { name: "Checked", type: "boolean" }
            ],
            writer: new Ext.data.JsonWriter(),
            autoSave: false,
            batch: true,
            listeners: {
                load: function(s, r, o) { OnLoad(grid, checkColumn, store, cm) }
            }
        }),
        combo = new Ext.form.ComboBox({
            id: "perpage",
            name: 'perpage',
            width: 40,
            store: new Ext.data.ArrayStore({
                fields: ['id'],
                data: [
                    ['2'],
                    ['4'],
                    ['6']
                ]
            }),
            mode: 'local',
            value: '2',
            listWidth: 40,
            triggerAction: 'all',
            displayField: 'id',
            valueField: 'id',
            editable: false,
            forceSelection: true
        }),
        bbar = new Ext.PagingToolbar({
            pageSize: 2,
            store: store,
            displayInfo: true,
            items: [
                "-",
                "Per page: ",
                combo
            ],
            displayMsg: 'Displaying items {0} - {1} of {2}',
            emptyMsg: "No items found"
        }),
        NameEdit = new Ext.form.TextField(),
        SalaryEdit = new Ext.form.NumberField(),
        BirthDateEdit = new Ext.form.DateField({
            format: "d/m/Y"
        }),
        checkColumn = new Ext.grid.CheckColumn({
            header: "Checked",
            dataIndex: "Checked",
            width: 50
        }),
        cm = new Ext.grid.ColumnModel({
            columns: [
                { dataIndex: "Id", header: "ID", width: 30, sortable: true, hidden: true },
                { id: "ColName", dataIndex: "Name", header: "Name", editor: NameEdit, width: 180, sortable: true },
                { dataIndex: "Salary", header: "Salary", editor: SalaryEdit, width: 75, sortable: true, align: "center" },
                { dataIndex: "BirthDate", header: "BirthDate", renderer: Ext.util.Format.dateRenderer("d/m/Y"), editor: BirthDateEdit, width: 100, sortable: true, align: "center" },
                checkColumn
            //{ dataIndex: "Checked", header: "Checked", xtype: "booleancolumn", width: 50, sortable: true, align: "center" }
            ]
        }),
        grid = new Ext.grid.EditorGridPanel({
            id: "TestGrid",
            title: "TestGrid",
            plugins: [],
            //plugins: checkColumn,
            clickstoEdit: 1,
            store: store,
            //cm: cm,
            //autoExpandColumn: "ColName",
            columns: [],
            width: 600,
            height: 200,
            tbar: {
                items: [
                    { text: 'Save Changes',
                        handler: function() {
                            store.save();
                        }
                    }
                ]
            },
            bbar: bbar
        }),
        viewport = new Ext.Viewport({
            layout: 'border',
            renderTo: Ext.getBody(),
            items: [{
                region: 'north',
                xtype: 'panel'
                }, {
                region: 'center',
                xtype: 'panel',
                items: grid
                }]
            });

    combo.on('select', function(combo, record) {
        bbar.pageSize = parseInt(record.get('id'), 10);
        bbar.doLoad(bbar.cursor);
    }, this);

    store.load({ params: { start: 0, limit: parseInt(Ext.getCmp("perpage").getValue(), 10) } });
});

function OnLoad(grid, checkColumn, store, cm) {
    //grid.plugins = checkColumn;
    grid.plugins.push(checkColumn);
    checkColumn.init(grid);
    grid.reconfigure(store, cm);
}

Ext.grid.CheckColumn добавляется, но не редактируется...
__________________
"Helo, word!" - 17 errors 56 warnings
Ответить с цитированием
  #2 (permalink)  
Старый 15.09.2010, 00:09
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Попробовал сделать по аналогии как это стандартно делается:
Код:
grid.plugins=grid.initPlugin(checkColumn);
CheckColumn.js CheckColumn.init():
init : function(grid){
        this.grid = grid;
        this.grid.on('render', function(){
            var view = this.grid.getView();
            view.mainBody.on('mousedown', this.onMouseDown, this);
        }, this);
    }

- вызывается.
Но, вот, onMouseDown, похоже, - не прикручивается. Почему?
__________________
"Helo, word!" - 17 errors 56 warnings
Ответить с цитированием
  #3 (permalink)  
Старый 15.09.2010, 11:47
Аватар для Ex_Soft
Профессор
Отправить личное сообщение для Ex_Soft Посмотреть профиль Найти все сообщения от Ex_Soft
 
Регистрация: 19.12.2009
Сообщений: 164

Сообщение от Ex_Soft Посмотреть сообщение
Но, вот, onMouseDown, похоже, - не прикручивается. Почему?
Потому, что render не возникает - grid уже отрисован. Поэтому нужно самому руками прикручивать:
grid.plugins=grid.initPlugin(checkColumn);
grid.getView().mainBody.on('mousedown', checkColumn.onMouseDown, checkColumn);

и все зафунциклировало...
__________________
"Helo, word!" - 17 errors 56 warnings
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обрезать строку и добавить символы в середине, в зависимости от длинны строки andreyua Firefox/Mozilla 12 10.12.2010 15:44
Как добавить значение в input type="file"? PAMAC Общие вопросы Javascript 2 01.04.2010 19:59
Как правильно добавить форму используя jQuery Casufi jQuery 1 15.02.2010 23:14
как динамически добавить столбец oxx Элементы интерфейса 4 06.11.2008 17:23
Как добавить свой блог в раздел feeds этого сайта IzumeRoot Ваши сайты и скрипты 13 30.10.2008 21:11