Возникли проблемы при обновлении Gridx с помощью JsonRest
Когда учетная запись выбрана, я хотел бы показать все связанные контакты в contactGrid. Я могу сделать это с XhrGet, но я хотел бы использовать JsonRest.
Вот как я настраиваю Grid:
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 и распечатываю его на консоль. Видя, что ответ json выглядит хорошо, я пытаюсь установить 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 ответ
Мой маленький совет - попытаться настроить магазин один раз и использовать вместо него фильтр.
grid.filter({"acctId":"..."});
Второе - хранилище иногда требует определения idAttribute, т.е.
JsonRestStore({target:"...", idAttribute:"id"});