テーブルシートは、行の作成、読み込み、更新、削除などの行の操作でデータソースとやり取りする機能を提供します。行の操作により編集した行をデータベースに容易に同期できます。
次のテーブルシートクラスのメソッドを行の操作として使用できます。
メソッド | 説明 |
---|---|
addRow | テーブルシートに新規行を追加します。 |
removeRow | 指定された行をテーブルシートから削除します。 |
saveRow | 指定されたテーブルシート行の変更(更新行と挿入行を含め)をデータマネジャーに保存します。 |
resetRow | テーブルシートの指定された行の変更をリセットします。 |
次の図は、実際の行操作を示しています。
テーブルシートでデータを変更するにはデータマネジャーと連携して処理します。変更されたデータをリモートデータベースと同期させるには、自動更新やバッチ更新を有効にする必要があります。
addTableメソッドを使用する際に、自動同期モードやバッチモードのプロパティを設定します。次は、自動同期モードやバッチ同期モードを設定する方法を説明します。
JavaScript |
コードのコピー
|
---|---|
var myTable = dataManager.addTable("myTable", { // ... その他の設定 autoSync: true // 自動同期モードを有効にします。 }); |
JavaScript |
コードのコピー
|
---|---|
var myTable = dataManager.addTable("myTable", { // ... その他の設定 batch: true, // バッチモードを有効にします。 remote: { // ... その他の設定 batch: { url: BatchApiUrl // api urlを指定します。 } } }); // すべての変更を保存します。 tablesheet.submitChanges(); // または、すべての変更を廃棄します。 tablesheet.cancelChanges(); |
テーブルシートは、リモート要求オプションを構成するための自己定義関数をサポートしています。 デフォルトでは、テーブルシートはオブジェクトによってリモート要求を構成します。要求を手動で処理する場合は、オブジェクトを関数に置き換えると、データの変更が関数に渡されます。
自己定義関数を使用する場合、自動同期モードとバッチモードには次のパラメータがあります。
次のサンプルコードは、カスタムリクエスト関数を作成して実装する方法を示します。
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クラスの getChanges メソッドを使用して、変更がサーバーに保存される前に、変更される内容について、以下の情報を取得することができます。
autoSyncモードでは、getChanges メソッドは「update」または「insert」を返します。 しかし、batchモードでは、getChanges メソッドは「update」、「insert」または「delete」を返します。