ExtJS добавление в каждую строку Ext.grid функциональной кнопки

Не так давно начал ознакомление с замечательным Javascript Фреймворком ExtJS, главной отличительной особенностью которого является больше количество готовых UI компонентов. Компоненты по умолчанию все стилизованы, поэтому нет необходимости заниматься версткой и рисованием, только JavaScript программирование.

Теперь о задачи которая передо мной встала. Нужно было в компонент Ext.grid добавить в каждую строчку (создать колонку) кнопок при нажатии на которую происходит вызов окна с параметрами. Опционально можно сделать в этом поле любой объект, допустим кнопку которая удаляет текущую строку.

Создадим класс который расширит возможности Ext.grid.RowSelectionModel класса строк Ext.grid. Я назвал этот класс Ext.ux.grid.Goto

Ext.ns('Ext.ux.grid');

Ext.ux.grid.Goto = Ext.extend(Ext.grid.RowSelectionModel, {
width: 30,
sortable: false,
dataIndex: 0, // Нужно задать полю, потому как в родителе этот параметр не может быть пустым

menuDisabled: true,
fixed: true,
id: 'deleter',

initEvents: function(){
Ext.ux.grid.Goto.superclass.initEvents.call(this);
this.grid.on('cellclick', function(grid, rowIndex, columnIndex, e){
//Проверяем, что нажали именно на нашу ячейку Ext.grid
if(columnIndex==grid.getColumnModel().getIndexById('deleter')) {
var record = grid.getStore().getAt(rowIndex);
//Получаем параметры для вызова окна, это данные из текущей строки Ext.grid
var CampaignStepID = record.get('CampaignStepID');
var SourceID = record.get('SourceID');
var StepName = record.get('CampaignStepName');
//Вызываем функцию которая создаст окно с параметрами
getCampaignStepCard(CampaignStepID, SourceID, StepName, this.desktop);
}
});
},

//Этот метод позволяет нам нарисовать  в каждой ячейке нашей колонки, что мы хотим
renderer: function(v, p, record, rowIndex){
return '<div class="silk-goto" type="button" style="width: 16px; height: 16px;cursor:pointer;"></div>';
}
});

Далее нам необходимо прицепить к Ext.grid наш плагин.
Создаем новый объект

//Добавляем плагин который активирует кнопку перехода в гриде
var GotoButton = new Ext.ux.grid.Goto();

var CampaignListCm = new Ext.ux.grid.LockingColumnModel({
// specify any defaults for each column
columns:
[
{
id: 'id',
header: 'ID',
dataIndex: 'ID',
menuDisabled: false,
hideable: false,
hidden: true,
// use shorthand alias defined above
editor: new Ext.form.TextField({
allowBlank: false
})
},
{
id: 'SourceID',
header: 'SourceID',
dataIndex: 'SourceID',
menuDisabled: false,
hideable: false,
hidden: true,
// use shorthand alias defined above
editor: new Ext.form.TextField({
allowBlank: false
})
},
GotoButton //Наша дополнительная колонка
]
});

А в сам Ext.grid добавляем наш плагин как selModel

var grid = new Ext.grid.EditorGridPanel({
id: 'CampaignSourceID',
store: CampaignSourceList,
cm: CampaignListCm,
selModel: GotoButton,
stripeRows: true,
columnLines:true,
region: 'center'
});

Смотрим на полученный результат

Special Column in Grid

Row in Grid

7 thoughts on “ExtJS добавление в каждую строку Ext.grid функциональной кнопки

  1. Можно же решить задачу проще
    Создаем функцию
    function cover_button(val){
    return »;
    }
    Создаем функцию которая будет создавать окно
    function edit_string(val){
    new Ext.Window(…);
    }
    Привязываем первую функцию как рендер одного из полей
    new Ext.grid.GridPanel({
    columns: [
    {header: «Опции», dataIndex: ‘ID’,renderer: cover_button},
    {header: «ID», dataIndex: ‘ID’}]

    });
    При отображении грида — будет прорисовываться картинка с событием вызова окна

  2. не прописалась
    Внутри первой функции
    function cover_button(val){
    return ‘(открывие тега)img border=»0″ title=»Редактировать» onclick=»edit_string(‘+val+’);» src=»images/b_edit.gif»(закрытие тега)’;
    }

  3. Пополение баланса Авито (Avito) за 50% | Телеграмм @a1garant

    Приветствую вас, дорогие друзья!

    Будем рады предоставить Всем вам сервис по пополнению баланса на действующие активные аккаунты Avito (а также, совершенно новые). Если Вам требуются конкретные балансы — пишите, будем решать. Потратить можно на турбо продажи, любые платные услуги Авито (Avito).

    Аккаунты не Брут. Живут долго.

    Процент пополнения в нашу сторону и стоимость готовых аккаунтов: 50% от баланса на аккаунте.
    Если требуется залив на ваш аккаунт, в этом случае требуются логин и пароль Вашего акка для доступа к форме оплаты, пополнения баланса.
    Для постоянных клиентов гибкая система бонусов и скидок!

    Гарантия:

    И, конечно же ничто не укрепляет доверие, как — Постоплата!!! Вперед денег не просим…

    Рады сотрудничеству!

    Заливы на балансы Авито
    ________

    на авито просят деньги за размещение
    забыла свой аккаунт на авито
    коммерческий аккаунт авито
    авито pro аккаунт
    постоянно блокируют аккаунт в авито

  4. Если попробовать дать предельно простое определение описание в доступной форме биткоину, то следует отметить, что это и В минувшем 2017 году зафиксировано значительное повышение и крипто-валюты Bitcoin. Это обусловлено тем, что в Японии, как средство платежа, она используется на государственном уровне. | |Эта валюта имеет математическую природу, так как основывается на числовой обработке сложных схем с помощью компьютерной программы и с успехом действует в интернете.|Используя такую крипто-валюту, как Bitcoin, пользователи, в числе большого числа других достоинств, увидели возможность защиты своих денег от инфляции (обесценивания), и что ещё более важно, начали финансировать передовые проекты для получения прибыли.|Сегодня биткоин, наряду с остальными крипто-валютами, получает всё большую популярность.|Благодаря присущим ему преимуществам, основным из которых является децентрализованность, появился вариант выполнять коммерческие сделки, не тратя личные денежные средства на разнице обменных курсов и без взимания каких-то дополнительных .] Таким образом, без центрального органа надзора, каждый обладатель биткоинов становится полноправным участником системы, которая в полной мере анонимна и не позволяет отслеживать персональные данные для сделки.
    https://wmsell.biz/exchange_qiwi_na_bitcoin/

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *