SpreadJS製品ヘルプ
データ操作
機能 > テーブルシート > データ操作

テーブルシートは、行の作成、読み込み、更新、削除などの行の操作でデータソースとやり取りする機能を提供します。行の操作により編集した行をデータベースに容易に同期できます。

次のテーブルシートクラスのメソッドを行の操作として使用できます。

メソッド 説明
addRow テーブルシートに新規行を追加します。
removeRow 指定された行をテーブルシートから削除します。
saveRow 指定されたテーブルシート行の変更(更新行と挿入行を含め)をデータマネジャーに保存します。
resetRow テーブルシートの指定された行の変更をリセットします。

次の図は、実際の行操作を示しています。

同期モード

テーブルシートでデータを変更するにはデータマネジャーと連携して処理します。変更されたデータをリモートデータベースと同期させるには、自動更新やバッチ更新を有効にする必要があります。

addTableメソッドを使用する際に、自動同期モードやバッチモードのプロパティを設定します。次は、自動同期モードやバッチ同期モードを設定する方法を説明します。

リモート要求をカスタマイズする

テーブルシートは、リモート要求オプションを構成するための自己定義関数をサポートしています。 デフォルトでは、テーブルシートはオブジェクトによってリモート要求を構成します。要求を手動で処理する場合は、オブジェクトを関数に置き換えると、データの変更が関数に渡されます。

自己定義関数を使用する場合、自動同期モードとバッチモードには次のパラメータがあります。

次のサンプルコードは、カスタムリクエスト関数を作成して実装する方法を示します。

JavaScript
コードのコピー
// カスタムリクエスト関数を作成します。
function sendRequest(url, options) {
    options.method = options.method || 'POST';
    options.headers = { 'Content-Type': 'application/json; charset=utf-8' };
    if (options.body) {
        options.body = JSON.stringify(options.body);
    }
    return fetch(url, options).then(resp => {
        if (resp.ok) {
            return resp.json();
        } else {
            throw resp.statusText;
        }
    });
}

// データマネジャーを初期化します。
var dataManager = spread.dataManager();
myTable = dataManager.addTable("myTable", {
    remote: {
        read: function () {
            return sendRequest(apiUrl, { method: 'GET' });
        },
        update: function (item) {
            return sendRequest(apiUrl, { body: item, method: 'PUT' });
        },
        create: function (item) {
            return sendRequest(apiUrl, { body: item });
        },
        delete: function (item) {
            return sendRequest(apiUrl, { body: item, method: 'DELETE' });
        },
        batch: function (changes) {
            return sendRequest(batchApiUrl, { body: changes });
        }
    },
    batch: true,
    onFailed: function(type, args) {
        console.log("error", type, args);
    }
});

エラー管理

サーバーが接続エラー(HTTP 404、HTTP 500など)やデータベースのエラー(主キーの重複、更新に失敗したなど)を返した場合、テーブルシートはユーザーにコールバックを介して処理させるか、エラーを表示します。

行ヘッダには赤いアラームアイコンが表示され、ユーザーがその上にカーソルを合わせると、エラーのヒントが表示されます。

TableSheet Row Header Error

データの変更を取得する

テーブルシートでは、TableSheetクラスの getChanges メソッドを使用して、変更がサーバーに保存される前に、変更される内容について、以下の情報を取得することができます。

autoSyncモードでは、getChanges メソッドは「update」または「insert」を返します。 しかし、batchモードでは、getChanges メソッドは「update」、「insert」または「delete」を返します。