Додзё версии 1.7.2
У меня есть DataGrid, заполненный данными из MemoryStore. Он отлично работает, но данные в сетке не обновляются при обновлении объектов в магазине.
вот как связаны сетка и магазин:
formStore = Observable(new MemStore());
formGrid = new DataGrid( {
store:ObjectStore( {objectStore:formStore} ),
query:{id:"*"},
structure:[
{ name:" ", field:"pending", width:"2em",
formatter:function ( count, rowIdx, cell ) {
return '<div style="font-size: smaller; text-align: right;">' + count + '</div>';
}
},
{ name:" ", field:"name", width:"auto",
formatter:function ( formName, rowIdx, cell ) {
return '<div style="white-space: nowrap;">' + formName + '</div>';
}
}
]
}, "formGrid" );
и у меня есть функция, которая обновляет данные в магазине:
function updateForms() {
require( ["dojo/_base/xhr", "dojo/_base/array", "dojox/grid/DataSelection"],
function ( xhr, array, DataSelection ) {
xhr.get( {
url:"services/jsonrest/form/",
content:{ id:"all" },
handleAs:"json",
load:function ( forms, io ) {
array.forEach( forms, function( form, idx ) {
formStore.notify(form, form.id);
});
}
} );
} );
}
если хранилище пусто, когда эта функция запускается, элементы будут отображаться в DataGrid
, но как только элементы находятся в сетке, они не обновляются. Это тестовая система, часть объекта Form меняется при каждом вызове.
В итоге я изменил метод на сервере, чтобы он постоянно возвращал все элементы, а затем функция javascript выглядит так:
function updateForms() {
require( ["dojo/_base/xhr", "dojo/_base/array", "dojox/grid/DataSelection"],
function ( xhr, array, DataSelection ) {
xhr.get( {
url:"services/jsonrest/form/",
content:{ id:"all" },
handleAs:"json",
load:function ( forms, io ) {
// reset all the items in the DataGrid
formGrid.setItems( forms );
}
} );
} );
}
это тоже работает. Выбор сохраняется, а DataGrid не мерцает. но это как бы побеждает цель.
Я нашел эту статью, но не смог ее понять . Я пробовал много вещей, и ничего не получалось. В этой статье используется старый синтаксис dojo.connect
вместо нового dojo.on
.
Я уверен, что где-то не хватает какой-то детали.
Спасибо за помощь.