Я выполняю миграцию и расширение существующего веб-приложения на основе очень старой Dojo Framework.
Декларативная настройка таблицы:
OLD
<table dojoType="FilteringTable" id="dataTable"
valueField="f_id" multiple="false" alternateRows="true">
<thead><tr>
<th field="f_fname">Firstname</th>
<th field="f_lname">Lastname</th>
</tr></thead>
</table>
NEW
<table dojoType="dojox.grid.DataGrid" id="dataTable">
<thead><tr>
<th field="f_fname">Firstname</th>
<th field="f_lname">Lastname</th>
</tr></thead>
</table>
Хранилище таблицы инициализации:
OLD
var tab = dojo.widget.byId("dataTable");
if(tab){
tab.store.setData([]);
}
NEW
var tab = dijit.byId("dataTable");
if(tab){
if(!tab.store){
tab.store = new dojo.store.Memory({data:[]});
}
else{
tab.store.setData([]);
}
}
Обновление данных:
СТАРЫЙ / НОВЫЙ
tab.store.setData(result.array);
Старая версия таблицы заполнена данными, а новая версия таблицы остается пустой.Массив данных, полученный в обоих случаях, абсолютно одинаков.
Поэтому мне интересно, какие различия следует учитывать между хранилищем, используемым в старой FilteringTable, и API хранилища, используемым для новой dojox DataGrid.
Поскольку я новичок в использовании хранилищ данных в целом, возможно, мне не хватает некоторых важных частей.
Визуально новая таблица выглядит полностью функциональной.
обновление
tab.update(); // tab = dojox.grid.DataGrid
не делает ничего, чтобы обновить визуальную часть.Разве DataGrid не должен обновляться при изменении данных хранилища, или необходимо какое-то ручное действие?
На самом деле DataGrid, похоже, вообще не реагирует на изменения в хранилище памяти.Может быть, здесь не хватает проводки?
обновление
Я проводил сетку с хранилищем памяти декларативно:
<div dojoType="dojo.store.Memory" jsId="memStore"></div>
<table dojoType="dojox.grid.DataGrid" id="dataTable" store="memStore">
<thead><tr>
<th field="f_fname">Firstname</th>
<th field="f_lname">Lastname</th>
</tr></thead>
</table>
СначалаЯ получаю сообщение об ошибке в _setStore () в DataGrid.js, говорящее:
this.store.getFeatures is not a function
.Возможно ли, что DataGrid не совместим со всеми магазинами?У меня сложилось впечатление, что API-интерфейс хранилища был стандартизирован в 1.6.
Если да, есть ли альтернативное хранилище для использования с вводом массива javascript.(как видно выше)