JQGrid Dynamic Select Data - PullRequest
       15

JQGrid Dynamic Select Data

2 голосов
/ 21 июля 2010

Я использовал пример кода на Пример кода по этой ссылке

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

например. данные о моем выборе могут быть «0: Hello; 1: World»; Выпадающее окно редактирования / добавления показывает Hello и World и имеет правильные индексы для них. Если ячейка имеет значение 1, я ожидаю, что она покажет Мир в самой сетке, но вместо этого она показывает 1.

Вот сама строка из моей сетки:

{ name: 'picklist', index: 'picklist', width: 80, sortable: true, editable: true,
  edittype: "select", formatter: "select", editrules: { required: true} },

Я заполняю содержимое динамических данных в событии loadComplete следующим образом:

$('#mygrid').setColProp('picklist', { editoptions: { value: picklistdata} });

Данные списка выбора - это строка из пар значений типа "0: Привет; 1: Мир".

Пожалуйста, кто-нибудь может предложить любую помощь. Я довольно новичок в JQGrids, поэтому не могли бы вы также привести примеры.

Ответы [ 2 ]

1 голос
/ 23 февраля 2012

Я знаю, что вы уже решили проблему, но я столкнулся с той же проблемой в своем проекте и хотел бы предложить свое решение.

Сначала я объявляю настраиваемый форматер для моего столбца select (в данном случае, столбца 'username').

$.extend($.fn.fmatter, {
    selectuser: function(cellvalue, options, rowdata) {
        var userdata;
        $.ajax({
            url:'dropdowns/json/user',
            async:false,
            dataType:'json',
            cache:true,
            success: function(data) {
                userdata = data;
            }
        });
        return typeof cellvalue != 'undefined' ? userdata[cellvalue] : cellvalue ;
    }
});

Этот форматтер загружает отображение идентификатора и пользователя в этом случае и возвращает имя пользователя для определенного значения ячейки. Затем я установил для параметра formatter:'selectuser' значение colModel столбца, и оно работает.

Конечно, это делает один запрос json на строку, отображаемую в сетке. Я решил эту проблему, установив 10 секунд кэширования в заголовки моих ответов JSON, например:

private function set_caching($seconds_to_cache = 10) {
    $ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
    header("Expires: $ts");
    header("Pragma: cache");
    header("Cache-Control: max-age=$seconds_to_cache");
}

Я знаю, что это решение не идеально, но оно подходило для моего приложения. Хиты кэша обслуживаются браузером мгновенно, и сетка течет плавно. В конечном счете, я надеюсь, что встроенный форматер select будет исправлен для работы с данными json.

0 голосов
/ 26 июля 2010

Если вы сохраняете в jqGrid идентификаторы элементов select и хотите показать соответствующие тексты, тогда вам следует использовать formatter:'select' в colModel (см. http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter#formatter_type_select) вместе с edittype: "select".

Использование stype: 'select' также может быть вам интересно, если вы планируете поддерживать поиск данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...