Как мне выполнить сортировку на стороне сервера в JSGrid? - PullRequest
0 голосов
/ 25 мая 2018

Я реализовал jsGrid и выполнил фильтрацию на стороне сервера. Теперь я хочу отправить параметр сортировки на сторону сервера и выполнить сортировку на стороне сервера по щелчку столбца.Вот как я реализовал сетку -

 var db = {

  loadData: function(filter) {
    var bFilter = [];
    var d = $.Deferred();
    console.log("sorting:", filter.sortField, filter.sortOrder);
    for (var prop in filter) {
      if (prop != "sortField" && prop != "sortOrder") {
        bFilter.push({
          "Name": prop,
          "Value": filter[prop]
        })
      } else{
       var sorting ={ "Name": filter["sortField"], "Type": filter["sortOrder"] };
      }
    }

      $.ajax({
        url: "http://abc/abc",
        dataType: "json",
        data: JSON.stringify({
          "filter": bFilter,
          "sorting": sorting
        })
      }).done(function(response) {
        d.resolve(response.value);
      });

    return d.promise();

    },

    };


    $("#jsGrid").jsGrid({
    height: 300,
    width: "100%",

  filtering: true,
  editing: true,
  sorting: true,
  paging: true,
  autoload: true,

  pageSize: 2,
  pageButtonCount: 5,

  deleteConfirm: "Do you really want to delete the client?",

  controller: db,

  fields: [{
      name: "Name",
      type: "text",
      width: 150
    },
    {
      name: "Age",
      type: "number",
      width: 50
    },
    {
      name: "Address",
      type: "text",
      width: 200
    },
    {
      type: "control"
    }
  ]
});

Как бы я вызвал тот же метод loaddata по щелчку заголовка для сортировки, чтобы выполнить фильтрацию и сортировку вместе на стороне сервера.Как отключить сортировку на стороне клиента и сделать это на стороне сервера так же, как фильтрация.Если я установлю sorting:false, он удалит щелчок из заголовков столбцов. Я хочу сохранить это также.

1 Ответ

0 голосов
/ 01 июня 2018

Мне удалось решить эту проблему, изменив функцию сортировки - jsGrid.loadStrategies.DirectLoadingStrategy.prototype.sort = function () { var filters = $("#tableId").jsGrid("getFilter"); var sorting = $("#tableId").jsGrid("getSorting"); this._grid.controller.loadData(filters, sorting);}

...