Я рекомендую вам использовать стандартную datatype: 'json'
вместо datatype
в качестве функции. Вам нужно только использовать дополнительно
datatype: 'json',
ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
mtype: 'GET',
(см. Настройка типа содержимого запросов, выполняемых, например, jQuery jqGrid )
и вернуть экземпляр класса jqGridTable, определенный следующим образом
public class jqGridTable
{
public int total { get; set; } // total number of pages
public int page { get; set; } // current zero based page number
public int records { get; set; } // total number of records
public List<jqGridRow> rows { get; set; }
}
public class jqGridRow
{
public string id { get; set; }
public List<string> cell { get; set; }
}
Или, если мы хотим использовать наиболее компактную форму данных, передаваемых с сервера на клиент, тогда следуем
// jsonReader: { repeatitems : true, cell:"", id: "0" }
public class jqGridTable {
public int total { get; set; } // total number of pages
public int page { get; set; } // current zero based page number
public int records { get; set; } // total number of records
public List<List<string>> rows { get; set; }// first element of row must be id
}
Возможно, вам следует использовать немного другой jsonReader
, чтобы иметь возможность декодировать данные из свойства d
результатов веб-службы (см. Jqgrid 3.7 не показывает строки в Internet Explorer ).
Для поддержки подкачки и сортировки на стороне сервера необходимо добавить
int page, int rows, string sidx, string sord
к списку параметров вашего сервиса.
ОБНОВЛЕНО : Другая ссылка jqgrid Страница 1 из x pager имеет практически полный код как jqGrid, так и службы ASMX. Вы можете использовать следующие простые jsonReader
:
jsonReader: { root: "d.rows", page: "d.page", total: "d.total",
records: "d.records", id: "d.names" }