高级自定义 > 业务逻辑自定义 > 自定义更改管理 > 为更改关系表格中的链接添加属性 > 内联编辑关于更改关系表格链接的属性 > 自定义过程 > 添加对多编辑操作的支持 (步骤 4)
  
添加对多编辑操作的支持 (步骤 4)
为了在轻量化或弹出式对话框中支持多选操作,请在关闭提示窗口时确保数据正确更新,这一点很重要。更改链接表格可利用已添加至支持的新表数据管理器存储:
分页和排序时保留值
有效存储值而无需序列化 DOM 元素 (仅 META 数据)
编辑后,应通过访问 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. 在自定义 actionModels.xml 文件中添加操作 "regulatoryAffected.setRegulatoryAffected"。
* 
通过覆盖自定义 actionModels.xml 中的操作模型,无需更新 MVC 表构建器,因为它已指向此已命名的操作模型。