Infragistics Ignite UI网格和ajax

时间:2015-03-10 15:28:17

标签: ajax infragistics ignite-ui

我正在尝试将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控件提供的开箱即用的功能,但没有正确的服务器端支持这个控件我不确定我想要使用它。必须有更好的方法来做到这一点吗?

1 个答案:

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