Опции рендеринга

jqGrid поддерживает большое количество опций.

Существует несколько способов их указать. Каждый последующий способ переписывает аналогичные значения, указанные в предыдущих.

1. $.jgrid.defaults (Javascript)

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

Например:

$.extend($.jgrid.defaults,
{
	datatype: 'json',
	mtype: 'POST',
 
	altRows: false,
	altclass: 'altrow'
});

2. $this->options (PHP)

Любые опции, заданные в виде массива в методе init.
При помощи объекта jqGrid_Data_Raw можно указывать даже javascript функции, но, в большинстве случаев, не рекомендуется это делать.

Например:

$this->options = array(
    'width' => 500,
    'multiselect' => true,
    'rowList'     => array(10, 20, 30),
    'onSelectRow' => new jqGrid_Data_Raw('function(id){alert("Selected row: " +id);}'),
    ');
);

3. Метод renderGridOptions (PHP)

Функция вызывается в перед рендерингом и дает возможность динамически изменить опции таблицы.

Например:

protected function renderGridOptions($opts)
{
    // dynamic caption
    $opts['caption'] = "User stat on " . date('d.m.Y');
    return $opts;
}

4. Второй аргумент render (Javascript)

Во втором аргументе при вызове render можно указать имя javascript переменной, содержащей объект с опциями.

Например:

//JS functions in JS code - recommended way
var opts = {
    width: 650,
    rowList: [15, 30],
    onSelectAll: function()
    {
        alert("All rows selected!");
    }
};
 
<?=$jq_loader->render('jq_render_1', 'opts');?>

Этот метод наиболее предпочтителен.

Опции навигатора

Вы можете полностью отказаться от автоматического рендеринга навигатора, установив

$this->nav = null;

Опции навигатора очень похожи на опции таблицы. Порядок перезаписи следующий:

  1. $.jgrid.nav (JS)
  2. $this→nav (PHP)
  3. renderNav (PHP)

Для указания опций редактирования, добавления, удаления, поиска и т.д. $this→nav используются специальные ключи:

  • prmEdit
  • prmAdd
  • prmDel
  • prmSearch
  • prmView

Их названия говорят сами за себя.

Например:

$this->nav = array(
    'add' => true, 
    'edit' => true, 
    'del' => true,
    'prmAdd' => array('width' => 600),
    'prmEdit' => array('width' => 720),
);

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