dojo.data.ItemFileReadStore: Неверный аргумент элемента. при перезагрузке данных
Я столкнулся со странной проблемой здесь. У меня есть поле выбора, отображающее значение поля Отдел. При изменении варианта отдела я должен заполнить сетку. Когда страница загружается в первый раз, событие onChange работает нормально, и данные отлично загружаются в сетку. Когда я меняю отдел в поле "Выбрать", я получаю сообщение об ошибке "dojo.data.ItemFileReadStore: недопустимый аргумент элемента". Я проверил JSON, возвращенный с сервера, и он точно такой же, как загруженный ранее JSON. Вот фрагмент кода моего кода
HTML
<div id="costCenter" data-dojo-type="dijit/form/Select" data-dojo-attach-point="costCenter" data-dojo-attach-event="onChange:loadStacks"></div>
JS
loadStacks: function() {
var requestParams = {};
requestParams.Action = "getStacks";
requestParams.callType = "ajaxCall";
requestParams.deptID = deptID;
var docData = null;
request.invokePluginService("MyPlugin", "UtilityService",
{
requestParams: requestParams,
requestCompleteCallback: lang.hitch(this, function(response) { // success
docData= response.Data;
var dataStore = new dojo.data.ItemFileReadStore({data: docData});
grid = dijit.byId("docGrid");
grid.attr('structure', docStructure);
grid.attr('store', dataStore);
grid.render();
})
}
);
}
Возвращены данные JSON:
docData : {"items":[{"docName":"test3","id":135,"order":1},{"docName":"Ashish","id":4085,"order":21},{"docName":"fsdfsadf","id":4088,"order":23}],"identifier":"docName"}
Есть идеи по этому поводу?
1 ответ
Решение
Решил это сам. Добавлены строки ниже, прежде чем устанавливать новый магазин в сетке.
if (null != grid.store)
{
grid.store.close();
grid.store.fetch({query: {docName: "*"}});
grid._refresh();
}
И установите clearOnClose: true при настройке нового магазина.