[]
テーブルシートでは、パフォーマンス向上のため、ビューを作成した際に取得したデータを内部にキャッシュして使用します。ビューを作成した後で、接続先のデータベースが変更された場合や、接続するデータソースを変更する場合に、テーブルシートではデータソースから新たなデータを取得して、内部にキャッシュしたデータを更新することができます。この機能は、例えばライブサーバーで接続エラーやその他の問題が発生し、バックアップサーバーのデータソースに切り替える場合や、SpreadJS の SSJSON に保存したテーブルシートの定義情報をテンプレートとして使用して、データの接続先を実行時に変更する場合などに役立ちます。
SSJSON をテンプレートとして使用し、データソースを実行時に動的に変更する実行例を以下に示します。
fromJSON メソッドを実行し、テーブルシートを定義したワークブック情報を読み込みます。
spread.fromJSON(spreadJson);
既存のテーブル情報に対して、新たな接続先を定義します。ここでは Promise の resolve メソッドでデータソースをオブジェクトとしてラップして、テーブルのデータソースを変更しています。
let myTable = spread.dataManager().tables["myTable"];
myTable.options = {
remote: {
read: function () {
return Promise.resolve(dataSource);
}
}
};
fetch メソッドの reload 引数をtrueに設定して実行します。この手順により、製品が内部にキャッシュしているデータソースが更新され、既存のビュー情報と変更されたデータソースを使用して、 setDataView メソッドを呼び出すことでテーブルシートを更新することができます。
myTable.fetch(true).then(function()
{
let myView = myTable.views["myView"];
let sheet = spread.getActiveSheetTab();
sheet.setDataView(myView);
});
メモ: fetch メソッドのreload 引数を使用して、setDataView メソッドを呼び出すことで、データビューを取得した後に、いつでもキャッシュをクリアして、テーブルシートを最新の状態で管理するのに役立ちます。