Как получить тип столбца jqGrid Search при выполнении поиска? - PullRequest
3 голосов
/ 03 февраля 2011

Я использую jqGrid 3.8.2 на ASP.net и объявляю довольно простую конфигурацию jqGrid. Данные отображаются правильно, и я могу выполнить поиск по нескольким условиям через диалоговое окно поиска ... без проблем.

Проблема в том, что в тех случаях, когда я ищу значение, которое не является строкой, мне нужно теперь указать тип данных в этом столбце. Несмотря на то, что у меня есть опция 'stype' в столбцах, чтобы точно сказать, какой тип я там ожидаю, эта конфигурация не передается в строке запроса при выполнении поиска.

JSON, который я получаю по запросу для 2 условий поиска, таков: { "GroupOp": "И", "правила": [{ "поле": "EntityId", "оп": "GT", "данные": "3"}, { "поле": "EntityId",» оп ":" л», "данные": "8"}]}

Обратите внимание, что значение 'data' всегда заключено в кавычки, но это числовое значение, и для этого столбца установлен тип 'int' (я ничего не могу найти о том, как его использовать)

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

Как это можно сделать?

Вот мое объявление сетки:

    $('#EntityListGrid').jqGrid({
        url: 'my url',
        datatype: 'json',
        mtype: 'GET',
        colNames: ['ID', 'Name', 'Actions'],
        colModel: [
        { name: 'EntityID', index: 'EntityID', width: 50, align: 'left', resizable: true, sortable: true, stype: 'int' },
        { name: 'Name', index: 'Name', width: 250, align: 'left', resizable: true, sortable: true, stype: 'string' },
        { name: 'act', index: 'act', width: 75, sortable: false },
        ],
        pager: $('#EntityListGridPager'),
        rowNum: 10,
        rowList: [10, 20, 30],
        sortname: 'EntityID',
        sortorder: 'desc',
        viewrecords: true,
        imgpath: '',
        caption: 'Entities',
        width: EntityListGridWidth,
        height: 400,
        gridComplete: function () {
            var ids = jQuery("#EntityListGrid").jqGrid('getDataIDs');
            var editImageUrl = 'edititem.GIF';
            for (var i = 0; i < ids.length; i++) {
                var cl = ids[i];

                ce = "<img src='" + editImageUrl + "'  onclick='EditEntity(" + cl + "); return false;' />";
                ce2 = "<input type='button' value='details' src='" + editImageUrl + "' onclick='EditEntity(" + cl + "); return false;' />";
                //jQuery("#EntityListGrid").jqGrid('setRowData', ids[i], { act: ce2 });
                $("#EntityListGrid").setRowData(ids[i], { act: ce2 });
            }
        }
        //});
    }).navGrid('#EntityListGridPager', { search: true, edit: false, add: false, del: false, searchtext: "Search" }, {}, {}, {}, { closeOnEscape: true, multipleSearch: true, closeAfterSearch: true });

1 Ответ

3 голосов
/ 03 февраля 2011

Как вы можете прочитать в документацию stype поддерживает только два значения : "текст" и "выбрать". stype будет использоваться только для создания различных элементов управления в диалоге поиска.

Все элементы данных, которые будут отправлены на сервер, всегда кодируются как строки, и сервер должен преобразовать данные в соответствующий тип данных. Например, если вы используете столбец в качестве даты или целого числа, сервер отвечает за преобразование данных в DateTime, Int32, Int64, Double или в какой-либо другой тип.

...