1

我正在尝试将 Ignite UI Grid 与从 Ajax 请求返回到我自己的服务的数据一起使用。如果我从一个请求中取回所有数据并将 JSON 结果用作网格的数据源,那效果很好。我真正想要的是能够在服务器上支持分页、过滤和排序,但是我很难连接 igGrid 来发出正确的 ajax 请求。

我尝试使用 url 设置我自己的 ig.DataSource 对象,这将被调用,但我似乎无法将请求指定为“POST”而不是“GET”。我们目前对所有 ajax 请求使用“POST”,并在请求正文中传递参数。我还没有想出使用 ig.DataSource 的方法。

我有点期望 igDataSource 支持带有回调的函数,如下所示:

$("#myGrid").igGrid({

dataSource: function(data, callback) {
    $ajax({url: "/something",
    method: "POST", 
    data: {param1: ""}, 
    success: callback)
}

这只会调用一个函数,然后处理一个回调(类似于 DataTables 处理 ajax 请求的方式。还有一个我认为可能有效的 ig.FunctionDataSource ,但这似乎也不是我需要的。看起来有并不是真正要挂钩的 ajax 调用的回调。

有没有其他人遇到过这个问题或有解决方案?我唯一的另一个选择是尝试在网格中找到所有进行分页、过滤和排序的地方,并为每个地方处理事件,并提出我自己的请求并刷新网格。我真的很喜欢 Ignite 控件提供的开箱即用的功能,但是如果没有对该控件的正确服务器端支持,我不确定是否要使用它。必须有更好的方法来做到这一点?

4

1 回答 1

0

请尝试这是否适合您:

        var url = "http://igniteui.com/api/employees?callback=?";
        ds = new $.ig.DataSource({
            type: "remoteUrl",
            responseDataKey: "d.results",
            responseDataType: "jsonp",
            responseContentType: "application/json; charset=utf-8",
            dataSource: url,
            callback: function (success, error) {
                if (success) {
                    $("#grid").igGrid({
                            dataSource: ds,
                            autoGenerateColumns: true
                    });
                } else {
                    alert(error);
                }
            },
        });
        ds.dataBind();
于 2015-03-11T14:37:25.977 回答