2014-09-15 5 views
1

У меня возникла странная проблема. У меня есть поле выбора, отображающее значение поля Департамента. При замене опции отдела я должен заполнить сетку. Когда страница загружается в первый раз, событие onChange отлично работает, и данные загружаются в сетке. Когда я меняю отдел в поле «Выбор», я получаю ошибку в firebug «dojo.data.ItemFileReadStore: недопустимый аргумент элемента». Я проверил JSON, возвращенный с сервера, и он точно такой же, как ранее загруженный JSON. Вот фрагмент кода моего кодаdojo.data.ItemFileReadStore: неверный аргумент элемента. при перезагрузке данных

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