基本自定义 > 用户界面自定义 > 在 UI 中呈现信息 > 使用 JSP 框架构造和呈现表格 > 自定义点
  
自定义点
JcaTableConfig 类 API 适用于各种表格级别自定义点。JcaColumnConfig 类 API 适用于各种表格列级别自定义点。
为表格组件配置自定义视图 JSP
MVC 基础结构可为表格和树提供默认 JSP。在大多数情况下,您无需覆盖默认视图。如果需要以自定义方式呈现表格模型,可以在表格或树配置对象上设置视图路径来执行此操作。请注意,视图路径必须相对于 WEB-INF/jsp,以确保 JSP 只能由 MVC 构建器访问,而不能直接从客户端进行访问。这意味着,必须将 JSP 检入到 <ModuleRoot>\src_web\WEB-INF\jsp\<ModuleDirectory>\aCustomView.jsp 的子文件夹中。
在表格构建器类中:
TableConfig table = factory.newTableConfig ();

table.setView("/myModule/aCustomView.jsp");
自定义视图 JSP (\WEB-INF\jsp\<ModuleDirectory>\aCustomView.jsp) 如下所示:
<%@ taglib uri="http://www.ptc.com/windchill/taglib/jcaMvc" prefix="mvc"%>

… /* custom code here */

<mvc:table/>

…/* custom code here */
重新使用表格构建器类
在编写新构建器时,可重新使用在构建器中定义的 API。通常,最好将所需的构建器保留为表格实现的实例字段,而不是扩展其他构建器。这遵循了重视构成甚于继承的一般经验法则。如果打算重新使用配置构建器,则应确保对其设置组件配置工厂。
示例:
@ComponentBuilder("my.builder")
public class MyBuilder extends AbstractComponentBuilder {

private final OtherBuilder otherBuilder = new OtherBuilder ();

@Override
public ComponentConfig buildComponentConfig(ComponentParams params) throws WTException{

}
@Override
public void setComponentConfigFactory(ComponentConfigFactory configFactory) {
super.setComponentConfigFactory(configFactory);
otherBuilder.setComponentConfigFactory(configFactory);
}
}
设置可排序列
排序行为
在以下情况下,表格将在客户端进行排序:
1. 表格已启用异步数据源,且应用程序团队未在表格构建器的结果处理器中将 'preSorted' 特性指定为 true。
2. 如果用户明确更改了排序条件,并重新访问表格。(排序粘性)。
在以下情况下,表格不会在客户端进行排序:
1. 如果应用程序团队在表格构建器的结果处理器中将 'preSorted' 特性设置为 true。
2. 启用同步数据源的表格。
在客户端排序期间,当数据块到达客户端时,将按照客户端的排序条件将其添加到存储中。
如果用户在加载数据时单击“排序”,则数据会在客户端进行排序。此外,随后的数据块也会按排序顺序添加。
多列排序:多次单击排序功能允许用户通过按 shift 键同时对多个列进行排序。每次最多允许对三列进行排序。
在对版本列进行排序的情况下,系统会在服务器端进行排序。
设置默认排序
通过对列使用 setDefaultSort(true),表格列可以作为默认排序列。对于方向 setAscending(),设置值为 true 时为升序排序,设置值为 false 时为降序排序。
ColumnConfig col = factory.newColumnConfig(“name”, true);
col.setDefaultSort(true);
col.setAscending(false);
在表格构建器中按上述方式配置列将导致表格以如下方式显示:
配置删除线功能
JCA 表格组件具有为单个行“加红线”的功能。
以下配置点可用于指定哪些行将会添加删除线。
在隐藏列上配置删除线
添加 ID 为 "strikeThroughRow" 的 dataStoreOnly 列。为布尔型列提供 need 属性。
示例:
ColumnConfig strikeThroughColumn = factory.newColumnConfig("strikeThroughRow",
false);
strikeThroughColumn.setDataStoreOnly(true);
strikeThroughColumn.setNeed("someColumnId");
在行值上配置删除线
应为列定义扩展 AbstractBooleanValueDataUtility 的新数据实用程序。
应定义唯一的抽象方法 getBooleanAttributeValue() 以返回布尔值。可编写自定义代码以确定返回的布尔值。布尔值将决定是否为行添加删除线。
示例:
在构建器中定义的要添加到 JcaTableConfig 的列:
ColumnConfig col = factory.newColumnConfig("myCol", false);
列的数据实用程序的相应映射:
<Service name="com.ptc.core.components.descriptor.DataUtility">
<Option serviceClass="com.ptc.windchill.enterprise.myModule.dataUtilities
.MyStrikeThroughRowDataUtility" requestor="java.lang.Object"
selector="myCol" cardinality="duplicate"/>
</Service>
新数据实用程序类:
public class MyStrikeThroughRowDataUtility extends AbstractBooleanValueDataUtility {
public boolean getBooleanAttributeValue (String component_id, Object datum, ModelContext mc) throws WTException {
/* some logic to return Boolean value*/
}
}
将已存在的布尔型列配置为删除线列
可在表格构建器中将布尔值列设置为删除线列。这样,此列的值即可用于确定是否为行添加删除线。
示例:
TableConfig tableconfig = factory.newTableConfig(‘myTable’);
ColumnConfig aBooleanColumn = factory.newColumnConfig("aBooleanColumn", false);
Tableconfig.setRowStrikeThroughColumn(aBooleanColumn);