jqGrid, тип данных: function () и доступ к sord, sidx и т. д. - PullRequest
0 голосов
/ 04 августа 2010

Я пытаюсь реализовать jqGrid с помощью WebMethod на странице, на которой размещена сетка.Это работает, если я использую dataType: function () в jqGrid:

 $("#mygrid").jqGrid({
     ...
     datatype: function() {
          $.ajax({
              url: "myPage.aspx/gridData",
              type: "POST",
              contentType: "application/json; char=utf-8"
              ...
          });
     }
  )};

В моем коде позади той же страницы, у меня есть мой метод:

[WebMethod()]
public static List<MyData> gridData() {
    return MyClass.getData();
}

Единственное, чтоЯ не уверен, как я могу получить доступ к данным, используемым для подкачки, сортировки (sord, sidx и т. Д.)?

Заранее спасибо.

1 Ответ

1 голос
/ 05 августа 2010

Я рекомендую вам использовать стандартную 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" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...