JQgrid не отображает данные во время генерации строк

Jqgrid не показывает данные JSON, однако строки генерируются

Код на стороне сервера:

public JsonResult Denominations()
{
.
.
int counter = 0;
var jsonData = new
{
total = result.UserObject.Count,
page = 1,
rows = (
      from p in result.UserObject
      select new
      {
            id = ++counter,
            cell = new string [] { 
                   p.CurrencyID.ToString(), 
                   p.DenominationID.ToString(), 
                   p.DenominationName.ToString(), 
                   p.DenominatorCount.ToString(), 
                   p.Multiplier.ToString(), 
                   p.TenderID.ToString()
                     }
                 }).ToArray()

            };
            return Json(jsonData, JsonRequestBehavior.AllowGet);
}

Данные со стороны сервера выглядят следующим образом: {"всего":1,"страница":1,"строки":[{"id":1,"ячейка":["1"," 1", "Пенни", "0", "0,0100", "1"]}]}

Код JavaScript:

$("#denominators").jqGrid({
        url: '/Denominations?tenderid=1&currencyid=1',
        contentType: "application/json",
        datatype: "json",
        jsonReader: {
            root: 'rows',
            page: 'page',
            total: 'total',
            repeatitems: false,
            cell: 'cell',
            id: 'id',
            userdata:'userdata'
        },
        mtype: "GET",
        colNames: ["CurrencyID", "DenominationID", "TenderID", "Multiplier", "DenominationName", "DenominatorCount"],
        colModel: [
            { name: "currencyid", width: 80, align: "center" },
            { name: "denominationid", width: 90, align: "center" },
            { name: "tenderid", width: 250 },
            { name: "multiplier", width: 250 },
            { name: "denominationname", width: 95 },
            { name: "denominatorcount", width: 95 },
        ],
        height: 'auto',
        loadonce: true,
        sortname: "DenominationID",
        sortorder: "desc",
        viewrecords: true,
        gridview: true,
        autoencode: true
    });

Вид:

<table id="denominators" ></table>

Представление создает сетку с заголовком столбца, однако строки генерируются, но в строках нет данных.


person Amod Chandra    schedule 19.06.2015    source источник


Ответы (1)


Вы неправильно используете jsonReader. Чтобы быть точным, свойство repeatitems: false ложно. Это означает, что формат каждого элемента в массиве rows

{
    "currencyid": "1",
    "denominationid": "1",
    "tenderid": 1,
    "denominationname": "Penny",
    "denominatorcount": "0",
    "multiplier": "0.0100"
}

Ты используешь

{
    "id": 1,
    "cell": [
        "1",
        "1",
        "Penny",
        "0",
        "0.0100",
        "1"
    ]
}

вместо. Таким образом, вы должны удалить jsonReader, потому что формат входных данных соответствует стандартному jsonReader, но вам все равно нужно изменить порядок столбцов сетки или изменить порядок элементов, которые вы размещаете в массиве cell, чтобы он соответствовал порядку столбцов в colModel.

Дополнительные замечания: вы используете неправильное значение для total. Это должно быть количество страниц. Кстати, вы используете loadonce: true. В этом случае вы можете удалить часть "total":1,"page":1 из ответа и просто вернуть массив именованных элементов. Вы должны просто выбрать имена столбцов так же, как имена свойств, если элементы.

person Oleg    schedule 19.06.2015