使用JsonRest刷新Gridx时遇到问题

时间:2014-07-17 16:30:26

标签: javascript json dojo dojo.gridx jsonreststore

选择帐户后,我想在contactGrid中显示所有相关联系人。 我可以用XhrGet做到这一点,但我想使用JsonRest。

以下是我设置网格的方法:

function contactTabSetup() {
  var structure = [{ field: 'id', name: 'Id', width: '5em' },
                   { field: 'firstName', name: 'First Name', width: '12%' },
                   { field: 'lastName', name: 'Last Name', width: '12%' },
                   { field: 'email', name: 'Email', width: '12%' },
                   { field: 'description', name: 'Description' },
                   { field: 'mobileNumber', name: 'Mobile Phone', width: '12%' }];

  var contactGrid = new Grid({
    id: 'contactGrid',
    pageSize: 20,
    cacheClass: Cache,
    structure: structure,
    noDataMessage: "No contacts found",
    modules: [SingleSort]}, contactTab);

  contactGrid.startup();
}

以下是我想填充网格的方法:

function contactLoad(acctIds) {
  var grid = registry.byId("contactGrid");
  grid.model.clearCache();
  grid.setStore(JsonRest({target:"//localhost:8080/program/contacts/byAccount/" + acctIds}));
  grid.body.refresh();
}

正在返回正确的Json响应(在控制台上查看):

{
    "description": "Mike is a cool guy",
    "email": "mike@mike.net",
    "firstName": "Mike",
    "id": 1503,
    "lastName": "Smith",
    "mobileNumber": "555-555-5555"
}

...但我无法让网格显示新数据。

任何帮助将不胜感激! 谢谢


我尝试了许多其他方法,没有成功...... 这是我被困的地方 - 不知道还有什么可以尝试。 我进行JsonRest调用,返回Json对象,并将其打印到控制台。 看到j​​son响应看起来不错,我尝试setStore并抛出此错误:“s.query不是dojo.js中的函数”(第382行)。这是一个错误,还是我错过了什么?谢谢。

// s.query is not a function in dojo 10.0.1
grid.model.clearCache();
var store = new JsonRest({target:"//localhost:8080/program/contacts/byAccount"});
store.get(acctIds).then(function(items){
  console.log(items);
  grid.setStore(items);
});
grid.body.refresh();

我找到了。变化:

grid.setStore(items);

grid.setStore(new ItemFileReadStore({data: {items : result}}));

有谁知道如何使用JsonRest而不包括ItemFileReadStore? 谢谢, 克里斯

1 个答案:

答案 0 :(得分:0)

我的一点建议是尝试设置一次存储并使用过滤器。

grid.filter({"acctId":"..."});

第二件事是商店有时需要idAttribute定义,即

JsonRestStore({target:"...", idAttribute:"id"});