非常に古いDojoフレームワークに基づいて既存のWebアプリケーションを移行および拡張します。
テーブルの宣言型セットアップ:
年
<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>
新着
<table dojoType="dojox.grid.DataGrid" id="dataTable">
<thead><tr>
<th field="f_fname">Firstname</th>
<th field="f_lname">Lastname</th>
</tr></thead>
</table>
テーブルストアの初期化:
年
var tab = dojo.widget.byId("dataTable");
if(tab){
tab.store.setData([]);
}
新着
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で使用されているストアと新しいdojoxDataGridで使用されているストアAPIの違いに対処する必要があるのではないかと思います。
私は一般的にデータストアを使用するのが初めてなので、いくつかの重要な部分が欠けている可能性があります。
視覚的には、新しいグリッドは完全に機能しているように見えます。
アップデート
tab.update(); // tab = dojox.grid.DataGrid
視覚的な部分を最新のものにするために何もしません。ストアデータが変更されたときにDataGridを更新する必要はありませんか、それとも手動でのアクションが必要ですか?
実際、DataGridはMemory-Storeの変更にまったく反応しないようです。たぶんここにいくつかの配線が欠けていますか?
アップデート
私は宣言的にメモリストアを使用してグリッドを接続しています。
<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>
私が最初に得るのは、DataGrid.jsの_setStore()で次のようなエラーが発生することです。
this.store.getFeatures is not a function
。DataGridがすべてのストアと互換性があるとは限りませんか?ストアAPIが1.6で標準化されているという印象を受けました。
もしそうなら、javascript配列入力で使用する代替ストアはありますか?(上記のように)