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 при настройке нового магазина.

Другие вопросы по тегам