自定义表格视图 (步骤 1)
1. 扩展任一预设表格视图类:
视图类
更改对象
受影响对象
ChangeTaskAffectedItemsTableViews
VarianceAffectedDataTableViews
AffectedDataTableViews
更改任务
超差
问题报告和更改请求
产生的对象
ChangeTaskResultingItemsTableViews
更改任务
2. 覆盖 getSpecialTableColumnsAttrDefinition() 方法以包括新属性。
3. 将列添加到所有视图中,或仅添至选定视图。
要将列添加到所有视图,覆盖方法 getDefaultColumns() 并将列插入到适当的位置。
要将列添加到选定视图,首先覆盖方法 getOOTBTableViews() 以调用 super.getOOTBTableViews(),查找需要更新的视图,并通过更改 TableColumnDefinitions 来更新这些视图。
4. 在自定义服务特性 xconf 文件中添加一个条目,以根据相应表格 id 注册自定义表格视图,如下所示:
<Service context="default"
name="com.ptc.core.htmlcomp.tableview.ConfigurableTable">
<Option
serviceClass="tableViews.custom.DistributingChangeTaskAffectedItemsTableViews"
selector="changeTask_affectedItems_table"
requestor="java.lang.Object"/>
</Service>
有关如何添加自定义服务提供者特性文件的详细信息,请参阅添加自定义服务提供者特性文件
5. 传播已创建的 xconf 文件,如下所示:
例如,如果已在 codebase/ext/custom/ 位置创建了 CustomTableView.xconfCustomTableView-service.properties.xconf 文件,则执行以下命令以传播这些 xconf 文件:
xconfmanager -i codebase/ext/custom/CustomTableView.xconf -p
xconfmanager -i codebase/ext/custom/CustomTableView-service.properties.xconf -p
有关这两个文件的内容,请参阅以下各项:
对于 CustomTableView.xconf 文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Configuration SYSTEM "xconf.dtd">
<Configuration targetFile="codebase/wt.properties">
<!-- Ensure that the file ext/custom/CustomTableView-service.properties.xconf
is appended to the list of custom property files. -->
<Property default="ext/custom/CustomTableView-service.properties.xconf"
name="wt.services.applicationcontext.WTServiceProviderFromProperties.
customPropertyFiles"/>
</Configuration>
对于 CustomTableView-service.properties.xconf 文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Configuration SYSTEM "xconf.dtd">
<Configuration targetFile="codebase/service.properties">

<Service context="default"
name="com.ptc.core.htmlcomp.tableview.ConfigurableTable">
<Option
serviceClass="tableViews.custom.DistributingChangeTaskAffectedItemsTableViews"
selector="changeTask_affectedItems_table"
requestor="java.lang.Object"/>
</Service>
</Configuration>
示例代码

public class DistributingResultingItemsTableViews extends
ChangeTaskResultingItemsTableViews {

/**
* The distributionList will only be added to the Parts and All views
immediately after
* the name column.
*/
@SuppressWarnings("unchecked")
@Override
public List getOOTBTableViews(String tableId, Locale locale)
throws WTException
{
List<TableViewDescriptor> result =
super.getOOTBTableViews(tableId, locale);
for(TableViewDescriptor descriptor: result) {
if( descriptor.getName().equals(PARTS_VIEW) ||
descriptor.getName()
.equals(ALL_VIEW)) {
Vector<ableColumnDefinition> columns =
descriptor.getTableColumnDefinition();
for(int c = 0; c < columns.size(); c++) {
if( "name".equals(columns.get(c).getName())) {
String key = DistributingChangeRecordConstants.
DISTRIBUTION_ATTRIBUTE;
columns.add(c++,TableColumnDefinition.
newTableColumnDefinition
(key,isColumnLocked(key)));
break;
}
}
}
}
return result;
}

@Override
@SuppressWarnings("unchecked")
public List<?> getSpecialTableColumnsAttrDefinition(Locale locale) {
List<Attribute.TextAttribute> results = (List<TextAttribute>)
super.getSpecialTableColumnsAttrDefinition(locale);
results.add(new Attribute.TextAttribute
(DistributingChangeRecordConstants.
DISTRIBUTION_ATTRIBUTE,
"Distribution List" /*Should be localized label*/, locale));
return results;
}
}
这对您有帮助吗?