Цикл статей «Документация jqGrid на русском».
Следующая статья — «Пример сводной таблицы (Pivot Table) в jqGrid».
Предыдущая статья — «Сводная таблица (Pivot table) в jqGrid».
Методы
jqPivot
jqPivotGrid имеет следующий синтаксис вызова:
1 |
jQuery("#grid").jqGrid('jqPivot', data, pivotoptions, gridoptions, ajaxoptions); |
Где
#grid — это id элемента table, так же как было в jqGrid.
data
— может быть строкой или массивом данных, передаваемых в сводную таблицу. В случае когда параметр является строкой, отправляется AJAX-запрос. Возвращаемые сервером данные должны быть в виде пар ключ—значение:
1 2 3 4 5 6 |
{"rows":[ {"CategoryName":"Beverages","ProductName":"Steeleye Stout","Country":"UK","Price":"1008.0000","Quantity":"65"}, {"CategoryName":"Beverages","ProductName":"Laughing Lumberjack Lager","Country":"USA","Price":"140.0000","Quantity":"10"}, {"CategoryName":"Beverages","ProductName":"Lakkalik","Country":"USA","Price":"2160.0000","Quantity":"120"}, ... ]} |
Имя свойства "rows" может быть настроено в ajaxoptions. Смотрите ниже.
В случае когда передаётся массив, свойство rows должно быть опущено, и данные должны выглядеть так:
1 2 3 4 5 6 7 |
[ ... {"CategoryName":"Beverages","ProductName":"Steeleye Stout","Country":"UK","Price":"1008.0000","Quantity":"65"}, {"CategoryName":"Beverages","ProductName":"Laughing Lumberjack Lager","Country":"USA","Price":"140.0000","Quantity":"10"}, {"CategoryName":"Beverages","ProductName":"Lakkalik","Country":"USA","Price":"2160.0000","Quantity":"120"}, ... ] |
Метод ожидает, что все необходимые данные будут переданы в сводную таблицу. Это означает, что никакой специальной обработки на сервере не нужно. Все последующие преобразования происходят на клиенте, и jqPivotGrid сам создаёт новые данные для отображения.
pivotoptions
Это объект со следующими свойствами:
Свойство: aggregates
Тип: массив объектов
Определяет агрерации записей и строит сводную таблицу. Массив должен иметь как минимум один объект и всегда должен быть определён. Если aggregates не указан, то сводная таблица не будет построена. Все свойства из colModel могут быть установлены. Список допустимых свойств указан ниже.
По умолчанию: пусто
Свойство: colTotals
Тип: boolean
Если установлено в true, то добавляется дополнительная строка внизу. Все поля сводной таблицы будут иметь итоги. Применяется только функция суммирования.
По умолчанию: false
Свойство: frozenStaticCols
Тип: boolean
Если установлено в true, то все поля, объявленные в xDimension (смотрите ниже), будут заблокированы от горизонтальной прокрутки.
По умолчанию: false
Свойство: groupSummary
Тип: boolean
С этим свойством будет происходить суммирование групп и подгрупп, если они есть. Если установлено в false, то суммирования не будет.
По умолчанию: true
Свойство: groupSummaryPos
Тип: string
Определяет позицию строки итогов. Возможные значения:
'header' (над строкой) и
'footer' (под строкой).
По умолчанию:
'header'
Свойство: rowTotals
Тип: boolean
Если установлено в true, то добавляется дополнительная колонка, которая содержит сумму (итоги) всех ячеек в строке.
По умолчанию: false
Свойство: rowTotalsText
Тип: string
Устанавливает надпись колонки для rowTotals, если rowTotals установлено в true.
По умолчанию:
"Total"
Свойство: xDimension
Тип: массив объектов
Определяет xDimension для таблицы. Эти значения являются ячейками из исходных данных, которые появляются как строки в таблице. Если указано более одного элемента, то автоматически появляется группировка. Иерархия начинается от первого элемента. Последний элемент — последний элемент группировки. Все свойства из colModel могут быть использованы. Смотрите ниже, чтобы узнать другие свойства.
По умолчанию: пусто
Свойство: yDimension
Тип: массив объектов
Определяет yDimension для таблицы. Значения создаются автоматически в зависимости от данных. Если указано более одного элемента, то автоматически появляется группировка заголовков. Иерархия начинается от первого объекта. Последний элемент — последний элемент группировки заголовков. Смотрите ниже, чтобы узнать другие свойства.
По умолчанию: пусто
Сводная таблица может быть построена, только если xDimension и aggregates не пусты.
aggregates
Этот массив содержит массив объектов. Элементы этого массива создают записи агрегации и являются коллекциями элементов, которые собираются вместе, чтобы сформировать общее количество. Обычно это выглядит так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
aggregates : [ { member : 'PrTotal', aggregator : 'sum', label:'Sum', width:50, formatter: 'number', summaryType : 'sum', align:'right' },{ member : 'PrTotal', aggregator : 'count', width:50, label: 'Count', summaryType : 'sum', formatter:'integer', align:'right' } ] |
member — имя или идентификатор, используемый для определения позиции элемента и описания в измерении. Значение должно существовать в исходных данных.
aggregator определяет применяемое действия. На текущий момент поддерживаются:
- sum — суммирует значения
- count — подсчитывает количество элементов в группе.
- min — ищет минимальное значение
- max — ищет максимальное значение
Свойство label появляется только в том случае, если длина aggregates больше единицы. В этом случае добавляется дополнительный заголовок группы, который суммирует с aggregators. Надпись берётся из данных.
Все свойства colModel могут быть найдены здесь.
xDimension
Как описано здесь, измерение — это данные, собранные из индивидуальных, не перекрывающихся элементов. Основные функции измерения: обеспечение фильтрации, группировки, подписывания.
Пример:
1 2 3 4 5 6 7 8 9 10 11 |
xDimension : [ { dataName: 'CategoryName', label: 'Category', width: 70 } , { dataName: 'ProductName', label: 'Product', frozen: false } ] |
dataName — это ячейка из данных, которая появляется в строке. Значение этого свойства должно соответствовать имени из исходных данных.
Все свойства colModel могут быть найдены здесь.
Если свойство frozenStaticCols установлено в true, то свойство frozen устанавливается автоматически. Вы можете переопределить это с помощью frozen:false в объекте, но будьте осторожны с порядком колонок.
yDimension
Значения динамически создают колонки в зависимости от исходных данных.
Пример:
1 2 3 4 5 6 7 8 9 10 |
yDimension : [ { dataName: 'Country', converter: function(Value, xValues) { return 'Total Countryies'; } },{ dataName: 'Country' } ] |
Возможные свойства:
dataName — имя ячейки из данных для колонки. Это значение должно соответствовать имени из исходных данных.
converter — функция, которая преобразует исходные данные ячейки и возвращает новое значение. В эту функцию передаются следующие параметры:
- Value — значение
- xValues — «статические» данные из строки.
gridoptions
Это свойства таблицы.
ajaxoptions
Дополнительно при получении данных с помощью AJAX-запроса можно указать дополнительные свойства AJAX.
На текущий момент поддерживаются только JSON-данные, поэтому некоторые свойства, вроде dataType, не рекомендуется менять. Вместе с этим мы имеем свойство reader, которое определяет корень данных. Например, если данные возвращаются с сервере в следующей структуре:
1 2 3 4 5 6 |
{"root":[ {"CategoryName":"Beverages","ProductName":"Steeleye Stout","Country":"UK","Price":"1008.0000","Quantity":"65"}, {"CategoryName":"Beverages","ProductName":"Laughing Lumberjack Lager","Country":"USA","Price":"140.0000","Quantity":"10"}, {"CategoryName":"Beverages","ProductName":"Lakkalik","Country":"USA","Price":"2160.0000","Quantity":"120"}, ... ]} |
То настройка может выглядеть так:
1 2 3 4 5 6 7 8 |
jQuery("#grid").jqGrid('jqPivot', "jsondataurl.json", {pivotoptions}, {gridoptions}, { reader:"root" } ); |
Цикл статей «Документация jqGrid на русском».
Следующая статья — «Пример сводной таблицы (Pivot Table) в jqGrid».
Предыдущая статья — «Сводная таблица (Pivot table) в jqGrid».