Это старая версия документа.


Стандартные операции

Автоматически поддерживаются CRUD операции: add, edit, del.
Дополнительный код нужен только в том случае, если необходимо изменить стандартное поведение.

Тип операции определяется значением входящей переменной oper.


Add (Insert)

Входящий запрос:

oper  : add
id    : _empty
name  : Попугай
price : 17

SQL-запрос:

INSERT INTO goods (name, price) VALUES ('Попугай', '17');

Edit (Update)

Входящий запрос:

oper  : edit
id    : 10
name  : Жираф
price : 59

SQL-запрос:

UPDATE goods SET name='Жираф', price='59' WHERE id='10'

Del (Delete)

Входящий запрос:

oper  : del
id    : 14

SQL-запрос:

DELETE FROM goods WHERE id = '14'

Дополнительные операции

Вы можете добавить любое количество своих операций.
Для каждой операции необходимо создать функцию с именем op{Операция} без аргументов.

Например, добавим операцию очистки таблицы:

protected function opTruncate()
{
    $this->dbQuery("TRUNCATE TABLE {$this->tblName}");
}

Обращаться к дополнительным операциям следует точно так же, как jqGrid обращается к стандартным.

Например, можно добавить кнопку на панель навигации.

$grid.jqGrid('navButtonAdd', pager,
{
    'caption'       : 'Truncate',
    'title'         : 'Truncate',
    'buttonicon'    : 'ui-icon-scissors',
    'onClickButton' : function()
    {
        if(!confirm('Delete all records?')) return false;
 
	$.get($grid.getGridParam('url'),
        {
            'oper'  : 'truncate'
        }, 
        function()
        {
            $grid.trigger('reloadGrid');
        });
    }
});

Расширение операций

Помимо создания дополнительных операций, несложно изменить поведение любой из стандартных.

Функция Аргументы Возврат Описание
opAdd row_data [array] - данные для записи array - доп. данные в ответ клиенту Стандартный add.
opEdit id [integer] - primary key
row_data [array] - данные для записи
array - доп. данные в ответ клиенту Стандартный edit.
opDel id [mixed] array - доп. данные в ответ клиенту Стандартный del. При удалении нескольких записей принимает строку с id через запятую
operData row_data [array] - данные для записи array - измененные данные для записи Позволяет изменить сохраняемые данные для операций add и edit. Часто используется для проверки данных и обработки значений Null.
operAfterAddEdit id [integer] - primary_key Вызывается после операций add и edit. Принимает id только что добавленного или измененного ряда.
operComplete response [array] - ответ от сервера
oper [string] - выполненная операция
array - ответ от сервера Вызывается после выполнения любой стандартной или дополнительной операции. Часто используется для заключительных действий, вроде сброса кешей, а также для финального изменения ответа от сервера.

Пример добавления своего кода перед и после стандартного редактирования:

protected function opEdit($id, $data)
{
    $data['name'] = ucfirst($data['name']); // before oper
    $response = parent::opEdit($id, $data); // exec orginial oper
    cache::drop($id);                       // after oper
    $response['cache_dropped'] = 1;         // modify original response
 
    return $response;
}

Пример модификации и проверки данных при add и edit:

protected function operData($data)
{
    $data['name'] = $data['name'] ? $data['name'] : null; //set null if empty
    $data['price'] = max(0, $data['price']);              //sanitize data
 
    //Server side error checking
    if($data['discount'] > 0.2)
    {
        throw new jqGridException('Discount is too high'); //This message goes directly to server response
    }
 
    return $data;
}

На других языках