如何在JSGrid中进行服务器端排序

时间:2018-05-25 08:54:13

标签: javascript jquery jsgrid

我已经实现了jsGrid并完成了Filtering服务器端。现在我想将排序参数发送到服务器端,并在点击列的服务器端进行排序。 这就是我实现网格的方式 -

 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 :(得分:0)

我能够通过更改排序功能 - jsGrid.loadStrategies.DirectLoadingStrategy.prototype.sort = function () { var filters = $("#tableId").jsGrid("getFilter"); var sorting = $("#tableId").jsGrid("getSorting"); this._grid.controller.loadData(filters, sorting);}

来解决这个问题