Как можно использовать jqGrid, когда число столбцов является динамическим (то есть определяется набором данных)? - PullRequest
1 голос
/ 31 июля 2010

У меня есть обобщенная процедура php, которая генерирует результаты xml из разных запросов mySQL. Фактическая структура XML будет варьироваться в зависимости от того, какой запрос используется. (На самом деле, количество столбцов будет варьироваться.)

Я только начал изучать использование jqGrid, и я хотел бы написать обобщенную подпрограмму отображения, где я делаю ajax-вызов в свой php-скрипт, чтобы получить соответствующий xml, а затем, основываясь на xml, получаю Динамически создайте colModel для jqGrid (т.е. количество столбцов, имена столбцов и т. д.).

Возможно ли это, и если да, то как мне подойти к нему?

Ответы [ 3 ]

1 голос
/ 05 февраля 2013

Предполагая, что ваши столбцы сопоставлены со свойствами / атрибутами объекта JSON, да, это можно сделать всего одним вызовом на сервер.Но вы должны:

  • иметь контроль над JSON (сеточными данными), поступающими с сервера
  • построить модель столбца, посмотрев на атрибуты элемента JSON
  • пересоздать сетку, используя только что созданную модель столбца

Псевдокод выглядит так:

   // row - the JSON object whose data represent a row
   var colNames = new Array();
   var colModel = new Array();
   for ( var i in row ) {
       colNames.push(i);
       colModel.push( { name: i, index: i, width: 60, sorttype: sorttype, formatter: formatter, formatoptions: formatoptions, align: align} );
    }
    $('#grid').jqGrid({
        datatype : 'local',
        colNames: colNames,
        colModel: colModel
...
    });
1 голос
/ 31 июля 2010

Это можно сделать, отправив отдельный запрос AJAX для извлечения динамических столбцов. Получив эти данные, вам нужно будет динамически сгенерировать параметры colmodel и colnames и создать их с помощью jqGrid. На этом этапе вы можете передать ему URL-адрес для получения данных, если в результирующем наборе URL-адресов гарантированно содержатся все динамические столбцы.

Это помогает?

0 голосов
/ 02 мая 2012

Вы можете объединить модель столбца и добавить ее вместе с данными и использовать один запрос, чтобы получить все, возможно, несколько похожих jqGrids на странице, используя ajax и json.

...