複数編集操作のサポートの追加 (ステップ 4)
ライトボックスまたはポップアップダイアログで複数選択操作をサポートするには、プロンプトウィンドウを閉じたときに、データが正しく更新されたことを確認することが重要です。リンク変更のテーブルでは、次の動作をサポートする新しいテーブルデータマネージャストアが使用されます。
• ページングおよび並べ替えの際に値を保持します。
• DOM エレメントをシリアル化せずに、値を効果的に格納します (メタデータのみ)。
• 編集の後、次の JavaScript メソッドにアクセスすることで、アイテムがテーブルデータマネージャストアに配置されます。
PTC.change.linkAttributeHelper.update(item, tableId);
• アイテムは、ID と値で構成された Javascript オブジェクトです。ID は次の形式になります。
rowOid#component_id (… VR:wt.part.WTPart:5556#regulatoryAffected)
• データストアの操作中はイベントを無効にしてください (suspendEvents/resumeEvents)。
• テーブルのレコードがストアにコミットされた場合は、次のメソッドを呼び出してテーブルを更新します。
table.view.doPartialDataChange();
例
次のコードは、複数の行を編集してテーブルを更新する際に必要な操作の例です。
01 function updateRecords(isChecked, componentId, tableId) {
02 var table = tableUtils.getTable(tableId);
03 var store = table.getStore();
04 store.suspendEvents();
05 var selections = table.getSelectionModel().getSelections();
06 for(var i=0,l=selections.length; i<l; i++) {
07 var record = selections[i];
08 record.data[componentId] = isChecked;
09 record.commit();
10 var oid = record.get('oid');
11 if(oid) {
12 var item = {
13 id : oid+SEP+componentId,
14 value : isChecked
15 };
16 PTC.change.linkAttributeHelper.update(item, tableId);
17 }
18 }
19 store.resumeEvents();
20 // re-draw displayed rows where data has changed.
21 table.view.doPartialDataChange();
22 }
23
コードサンプルの説明
• 04 行 - イベントを停止します。
• 08 行 - テーブルセルのテキストを更新します。
• 13 行 - データユーティリティとフォーム委任を変更して、読み取り可能な ID を生成します。
• 16 行 - テーブルデータマネージャストアにデータアイテムを格納します。
• 19 行 - イベントを再開します。
• 21 行 - テーブルの表示を、変更した内容で更新します。
プロセス
テーブルでライトボックスまたはポップアップダイアログを使用するには、テーブルの操作リストに起動操作を追加する必要があります。
1. ChangeManagement-actions.xml を基にカスタム操作ファイルを作成し、作成したファイルを wt.properties のプロパティ "com.ptc.netmarkets.util.misc.defaultActions" の末尾に登録します。
2. ChangeManagement-actionsModel.xml を基にカスタム操作モデルファイルを作成し、作成したファイルを wt.properties のプロパティ "com.ptc.netmarkets.util.misc.defaultActionmodels" の末尾に登録します。
3. 変更の objecttype とオーバーライドする操作のみを、カスタム actions.xml ファイルにコピーします。このカスタマイズの例では "regulatoryAffected" と、操作 "setRegulatoryAffected" を selectRequired=“true” の設定で使用します。
4. onClick のコマンドを、ライトボックス/ポップアップダイアログボックスを起動する JS 関数に設定します。
5. 操作 "regulatoryAffected.setRegulatoryAffected" をカスタム actionModels.xml ファイルに追加します。
|
カスタム actionModels.xml で操作モデルを上書きすると、MVC テーブルビルダーを更新する必要がなくなります (指定した操作モデルがすでにポイントされています)。
|