jsGrid插件 - 如何使用远程数据进行过滤?

时间:2016-11-27 04:13:42

标签: javascript jquery jsgrid

当涉及到javascript时,我是新手。我正在使用jsGrid插件在浏览器中显示网格。网格列标题将具有值“请求状态”和“请求标识”。我可以使用静态数据。

(function() {
    var adminDashboardController = {
        loadData: function(filter) {
            return $.grep(this.requests, function(request) {
                return (!filter.Status || request.Status === filter.Status)
                && (!filter.RequestId || request.RequestId.indexOf(filter.RequestId) > -1)
            });
        },

        insertItem: function(insertingReq) {
        },

        updateItem: function(updatingReq) { 
        },

        deleteItem: function(deletingReq) {
        }
    };

    window.adminDashboardController = adminDashboardController;

    adminDashboardController.status = [
        { Name: ""},
        { Name: "Requested"},
        { Name: "Declined"}
    ];

    //This is the static data
    adminDashboardController.requests = [
        { "Status": "Requested", "RequestId": "1"},
        { "Status": "Declined", "RequestId": "2"}
    ];
}());

但是当从ajax调用中获取数据(使用json文件作为数据源进行测试)时,当我选择“Requested”或“Declined”作为过滤条件时,数据不再被过滤。我正在使用文档中提到的格式 -

(function() {
    var adminDashboardController = {
        loadData: function (filter) {
            return $.ajax({
                type: "GET",
                dataType: "json",
                url: "/json/db514.json",
                data: filter
            });
        },
        insertItem: function(insertingReq) {
        },

        updateItem: function(updatingReq) { 
        },

        deleteItem: function(deletingReq) {
        }
    };

    adminDashboardController.status = [
        { Name: ""},
        { Name: "Requested"},
        { Name: "Declined"}
    ];
}());

在这种情况下,我无法理解如何实现过滤!

1 个答案:

答案 0 :(得分:0)

原因是过滤应该在代码中实现。

一般情况下可以这样做:

  1. 在客户端上(就像在第一个样本中一样)
  2. 在后端,然后你必须将过滤器传递给你的端点,它将进行过滤并返回数据。
  3. 组合方法(部分在后端和客户端之后)
  4. 在您的情况下,您可以在后端添加端点,这将加载json和过滤数据,或者仍然在客户端进行过滤,例如:

    loadData: function (filter) {
        return $.ajax({
            type: "GET",
            dataType: "json",
            url: "/json/db514.json"
        }).then(function(requests) {
            return $.grep(requests, function(request) {
                return (!filter.Status || request.Status === filter.Status)
                && (!filter.RequestId || request.RequestId.indexOf(filter.RequestId) > -1)
            });
        });
    }
    

    在GtiHub https://github.com/tabalinas/jsgrid/issues/32上查看此问题。