SpreadJS製品ヘルプ
動的なデータソースの変更
機能 > テーブルシート > データ操作 > 動的なデータソースの変更

テーブルシートでは、パフォーマンス向上のため、ビューを作成した際に取得したデータを内部にキャッシュして使用します。ビューを作成した後で、接続先のデータベースが変更された場合や、接続するデータソースを変更する場合に、テーブルシートではデータソースから新たなデータを取得して、内部にキャッシュしたデータを更新することができます。この機能は、例えばライブサーバーで接続エラーやその他の問題が発生し、バックアップサーバーのデータソースに切り替える場合や、SpreadJS の SSJSON に保存したテーブルシートの定義情報をテンプレートとして使用して、データの接続先を実行時に変更する場合などに役立ちます。

SSJSON をテンプレートとして使用し、データソースを実行時に動的に変更する実行例を以下に示します。

  1. fromJSON メソッドを実行し、テーブルシートを定義したワークブック情報を読み込みます。
    Javascript
    コードのコピー
    spread.fromJSON(spreadJson);
    

  2. 既存のテーブル情報に対して、新たな接続先を定義します。ここではPromiseresolve メソッドでデータソースをオブジェクトとしてラップして、テーブルのデータソースを変更しています。
    Javascript
    コードのコピー
    let myTable = spread.dataManager().tables["myTable"];
    myTable.options = { 
       remote: {               
           read: function () { 
               return Promise.resolve(dataSource); 
                   } 
             } 
    };
    

  3. fetch メソッドの reload 引数をtrueに設定して実行します。この手順により、製品が内部にキャッシュしているデータソースが更新され、既存のビュー情報と変更されたデータソースを使用して、setDataView メソッドを呼び出すことでテーブルシートを更新することができます。
    Javascript
    コードのコピー
    myTable.fetch(true).then(function()
    {
        let myView = myTable.views["myView"];
        let sheet = spread.getActiveSheetTab();
        sheet.setDataView(myView);
    });
                            
    
メモ:fetch メソッドのreload 引数を使用して、setDataView メソッドを呼び出すことで、データビューを取得した後に、いつでもキャッシュをクリアして、テーブルシートを最新の状態で管理するのに役立ちます。