带有自定义 JsonRest 的网格不加载数据

Posted

技术标签:

【中文标题】带有自定义 JsonRest 的网格不加载数据【英文标题】:Grid with custom JsonRest not loading data 【发布时间】:2015-04-09 12:56:12 【问题描述】:

我有 grid(gridx/Grid) 与扩展 dojo/store/JsonRest 的自定义存储连接。

我的服务器调用成功,store.data 将正确加载。

我的商店中有我的自定义 query() 方法(扩展 JsonRest)。我在 query() 方法中使用 POST 请求而不是 GET 请求。

query: function()
//....custom config.......
 var xhrArgs = 
              url: this.url,
              postData: postData,
              handleAs: "json",
              headers: 'Accept':'application/json','Content-Type':'application/json',
              load: function(data)
              
            // ....data customization....
                store.data = customizedData;

              ,
              error: function(error)
              
            console.log(error);
              
        
var results =  dojo.xhrPost(xhrArgs);

results.then(function(response)

// ....data customization....
    store.data = customizedData;
return customizedData;
);
return QueryResults(results);


我在 query() 方法和我的自定义函数(在 then 方法中)返回了 dojo/store/util/QueryResults。一切正常。唯一的问题是没有填充网格。

【问题讨论】:

【参考方案1】:

是的,找到了!!!

延迟是罪魁祸首!!

我们应该将自定义数据返回给 QueryResults 而不是 xhr 对象。

所以我的查询方法应该是这样的

query: function()
    //....custom config.......
     var xhrArgs = 
          url: this.url,
          postData: postData,
          handleAs: "json",
          headers: 'Accept':'application/json','Content-Type':'application/json',
          load: function(data)
          
        // ....data customization....
            store.data = customizedData;

          ,
          error: function(error)
          
        console.log(error);
          
            
    var results =  dojo.xhrPost(xhrArgs);


//********************************** THIS IS RIGHT WAY ***************
    var resolvedObject = results.then(function(response)

    // ....data customization....
        store.data = customizedData;
    return customizedData;
    );
    return QueryResults(resolvedObject);

当我们将解析的对象传递给 QueryResults 时,它会将所有迭代方法(如 forEach)附加到 resolvedObject 并将该对象返回给网格。

那么只有 grid 会迭代结果对象。实际上 grid 会这样做

store.query().forEach(##ADD ITEMS TO GRID##))

【讨论】:

以上是关于带有自定义 JsonRest 的网格不加载数据的主要内容,如果未能解决你的问题,请参考以下文章

xpages gridx jsonREST 和查询/搜索

在 Visual Composer 自定义网格模板上显示自定义字段图像

Dojo + DataGrid + JsonRest + 自定义 json

带有 ListView 自定义项的 Android 小部件

DOJO:DataGrid 增量加载不起作用

带有自定义列的 WPF 数据网格绑定