配置“在列表中搜索”
默认情况下,系统会为表格启用“在列表中搜索”功能。用户可以输入文本并按 Enter 键或单击“在列表中搜索”图标来执行搜索。在应用“在列表中搜索”筛选器后,表格将显示与所输入文本相匹配的记录。将仅搜索可见列中的值。在组件/页面刷新时,“在列表中搜索”筛选器具有粘性。
“在列表中搜索”表格筛选器和“仅查看选定对象”表格筛选器按如下方式进行交互:
1. 在应用“在列表中搜索”表格筛选器时,选定和禁用的行将保持选中/禁用状态。仅当所涉及的表格已完成 (数据源不再运行) 且表格仅拥有一个数据页时,才允许这样做。对于仍在填充或具有多个数据页的表格,系统会警告用户在应用搜索筛选器时所做的选择将会丢失。
2. 每次仅允许将一个筛选器应用于表格。用户可应用在“在列表中搜索”表格筛选器或“仅查看选定对象”筛选器。但不能同时应用这两种筛选器。当用户在启动一个筛选器的情况下选择另一个筛选器时,系统会提示用户也将清除原始筛选器。
禁用“在列表中搜索”功能
通过将 setFindInTableEnabled 设置为 false 在表格中禁用“在列表中搜索”。
TableConfig tableconfig = factory.newTableConfig('myTable');
tableConfig.setFindInTableEnabled(false);
“在列表中搜索”模式
“在列表中搜索”有多种模式。可使用 setFindInTableMode() 方法设置“在列表中搜索”模式。
以下是“在列表中搜索”的可用模式:
1. FindInTableMode.CLIENT_AND_SERVER (默认模式):在表格中针对客户端或服务器数据执行搜索。
2. FindInTableMode.CLIENT_ONLY:在表格中仅针对客户端数据执行搜索。
3. FindInTableMode.DISABLED:不显示“在列表中搜索”面板。
配置不可选择的行
基于现有可见列的不可选择行
可根据具有布尔值的列来设置不可选择行。
示例:
TableConfig table = factory.newTableConfig ();

//a column that is suppose to hold a boolean
ColumnConfig col1= factory.newColumnConfig (“aBooleanColumn”, false);

table.setNonSelectableColumn (col1);
基于支持对象中可用的布尔型属性值配置不可选择行
预设为配置不可选择行提供了数据实用程序 com.ptc.core.components.factory.dataUtilities.DefaultBooleanValueDataUtility。此数据实用程序会映射到列 ID "com.ptc.core.components.descriptor.DescriptorConstants.ColumnIdentifiers.NON_SELECTABLE_COLUMN"。为表格中的列设置数据实用程序的方式有两种:
使用 NON_SELECTABLE_COL 作为列 ID
创建 ID 为 "com.ptc.core.components.descriptor.DescriptorConstants.ColumnIdentifiers.NON_SELECTABLE_COLUMN" 的列。根据需要设置属性。
示例:
TableConfig table = factory.newTableConfig ();
ColumnConfig col = factory.newColumnConfig (NON_SELECTABLE_COLUMN, false);
col.setNeed (<Attribute>); // Specify the attribute which will decide the row is
selectable or not.
col.setDataStoreOnly (true); // this will make your Column hidden
table.addComponent (col);
table.setNonSelectableColumn (col);
将数据实用程序 ID 设置为 NON_SELECTABLE_COLUMN
创建具有任意 ID 的列,根据需要设置属性,并将数据实用程序 ID 设置为 "com.ptc.core.components.descriptor.DescriptorConstants.ColumnIdentifiers.NON_SELECTABLE_COLUMN"。
示例:
TableConfig table = factory.newTableConfig ();
ColumnConfig col = factory.newColumnConfig(<columnId>, false);
col.setNeed (<Attribute>); // Specify the attribute which will decide the row is
selectable or not.
((JcaColumnConfig)col)setDataUtilityId (NON_SELECTABLE_COLUMN);
col.setDataStoreOnly (true); // this will make your Column hidden
table.addComponent (col);
table.setNonSelectableColumn (col);
基于自定义数据实用程序的不可选择行
为要用作不可选择列的列创建并注册自定义数据实用程序。
创建自定义数据实用程序
用于控制不可选择行的自定义数据实用程序应扩展 "com.ptc.core.components.factory.dataUtilities.AbstractBooleanValueDataUtility"。
可使用自定义逻辑覆盖 getBooleanAttributeValue() 方法:
示例:
package com.customPkg;
import com.ptc.core.components.factory.dataUtilities.
AbstractBooleanValueDataUtility;
public class TestCustomDataUtility extends AbstractNonSelectableRowDataUtility {
public boolean getBooleanAttributeValue (String component_id, Object datum,
ModelContext mc) throws
WTException {
/* this method will return true if the row is not selectable */
}
}
注册自定义数据实用程序:
根据列 ID 配置新建的数据实用程序:
<Service name="com.ptc.core.components.descriptor.DataUtility">
<Option serviceClass="com.customPkg.TestCustomDataUtility "
requestor="java.lang.Object" selector="col1” cardinality="duplicate"/>
</Service>
不可选择行显示如下:
配置“仅数据存储”列
将列设置为“仅数据存储”会使列值在数据存储中可用,但列将不会显示在表格中。
例如:
TableConfig table = new TableConfig('testTable');
ColumnConfig dataStoreOnlyColumn = factory.newColumnConfig
("dataStoreOnlyColumn", false);
dataStoreOnlyColumn.setDataStoreOnly(true);
table.addComponent(dataStoreOnlyColumn);
将列配置为隐藏列
可将列设置为隐藏列,以使其不会显示在表格中。但是,隐藏列可以在列列表中找到,因此可将其取消隐藏。
例如:
TableConfig table = new TableConfig("testTable");
ColumnConfig stateColumn = factory.newColumnConfig("state", true);
stateColumn.setHidden(true);
table.addComponent(stateColumn);
添加工具栏
要添加工具栏,必须将键属性设置为 "actionModel",并将值属性设置为包含工具栏操作的操作模型名称。
例如:
TableConfig table = factory.newTableConfig();
table.setActionModel("customToolbar");
本示例使用的工具栏名为 "customToolbar",其中包含预先存在的文件夹操作。
如果表格使用了新的工具栏操作模型,则必须在 actionModels.xml 文件中对其进行注册。
<model name="CustomToolbar">
<action name="list_cut" type="object"/>
<action name="list_copy" type="object"/>
<action name="fbpaste" type="object"/>
<action name="list_delete" type="object"/>
<action name="separator" type="separator"/>
<action name="create" type="folder" shortcut="true" />
</model>
配置上述操作会生成工具栏操作模型,显示如下:
*actions.xml 和 *actionModels.xml 文件可通过逻辑打包进行模块化。这些文件位于 <Windchill>\codebase\config\actions。此外,custom-actions.xml 和 custom-actionModels.xml 文件可用于注册新的操作和操作模型。"customToolbar" 操作模型已在 custom-actionModels.xml 文件中注册。
如果用户选择几条记录,然后右键单击选定记录,则会显示表格工具栏操作模型。但请注意,只有具有 selectRequired="true" 和 multiSelect="true" 属性的操作才会显示。
配置菜单栏
可在表格构建器中使用 setMenubarName() 为表格设置菜单栏。
例如:
ComponentConfigFactory factory = getComponentConfigFactory();
TableConfig table = factory.newTableConfig();
table.setMenubarName("customMenubar");
本示例使用的操作模型名为 "customMenubar"。
本操作模型也必须在 *action-models.xml 文件中进行注册。可使用子模型标记来嵌套操作模型。
<model name="customMenubar">
<submodel name="fileMenu"/>
<submodel name="editMenu"/>
</model>
<model name="fileMenu">
<action name="list_cut" type="object"/>
<action name="list_copy" type="object"/>
<action name="fbpaste" type="object"/>
<action name="list_delete" type="object"/>
</model><model name="editMenu">
<action name="create" type="folder"/>
</model>
为了标记每个菜单,必须为“文件”和“编辑”子模型设置说明
操作特性必须包括在 action.properties 文件或资源束中。
下面所示的特性是添加到 action.properties 文件中的条目
“文件”和“编辑”actionModels 的条目如下所示:
object.fileMenu.description.value=File
object.editMenu.description.value=Edit
添加菜单栏将产生以下结果:
配置表格 - 启用行选择
可通过在表格配置中使用 setSelectable() 来使行处于可选状态。要使表格处于不可选状态,必须将该值设置为 false。默认情况下,表格是可选的。
例如:
可按如下方式设置不可选表格:
ComponentConfigFactory factory = getComponentConfigFactory();
TableConfig table = factory.newTableConfig();
table.setSelectable(false);
配置单选表格
我们可以将表格配置为单选表格。这将限制用户的操作:用户每次仅从表格中选择一条记录。可通过在表格中设置 singleSelect 特性来完成此操作。值为 true 时,在单选 (单选按钮) 模式下显示表格,值为 false 时,在多选 (复选框) 模式下显示表格。
例如:
ComponentConfigFactory factory = getComponentConfigFactory();
TableConfig table = factory.newTableConfig();
Table.setSingleSelect(true);
配置非预选行
预选行取决于现有的可见列
可根据具有布尔值的列来设置可预选行。列应返回具有可比较值 true/false 的 GUIComponent。
示例:
TableConfig table = factory.newTableConfig ();

//a column that is suppose to hold a boolean
ColumnConfig colX = factory.newColumnConfig(<columnId>, false);
table.setPreSelectableColumn(colX);
基于支持对象中可用的布尔型属性值配置可预选行
预设为此情况提供了数据实用程序 com.ptc.core.components.factory.dataUtilities.DefaultBooleanValueDataUtility。该数据实用程序将只会返回给定列的值。为表格中的列设置数据实用程序的方式有两种:
使用 PRE_SELECTABLE_COL 作为列 ID
创建 ID 为 "com.ptc.core.components.descriptor.DescriptorConstants.ColumnIdentifiers.PRE_SELECTABLE_COLUMN" 的列 (针对此列的数据实用程序已注册),并根据需要设置属性。
示例:
TableConfig table = factory.newTableConfig ();
---------
ColumnConfig col = factory.newColumnConfig (PRE_SELECTABLE_COLUMN, false);
col.setNeed (<Attribute>); // Specify the attribute which will decide the row is pre-selectable or not.
col.setDataStoreOnly (true);// this will make your column available on store only
table.addComponent (col);
table.setPreSelectableColumn (col);
基于自定义数据实用程序的可预选行
为要用作可预选列的列创建并注册自定义数据实用程序。
创建自定义数据实用程序
通过扩展 "com.ptc.core.components.factory.dataUtilities.AbstractBooleanValueDataUtility" 来创建自己的数据实用程序。
覆盖 getBooleanAttributeValue() 方法。
示例:
package com.customPkg;
import com.ptc.core.components.factory.dataUtilities.
AbstractBooleanValueDataUtility;
public class TestCustomDataUtility extends
AbstractBooleanValueDataUtility {
public boolean getBooleanAttributeValue(String
component_id, Object datum,
ModelContext mc) throws
WTException {
/* this method will return true if the row is pre selectable */
}
}
注册自定义数据实用程序
1. 根据列 ID 配置新建的数据实用程序:
<Service name="com.ptc.core.components.descriptor.DataUtility">
<Option serviceClass="com.customPkg.TestCustomDataUtility "
requestor="java.lang.Object" selector="col1” cardinality="duplicate"/>
</Service>
TableConfig table = factory.newTableConfig ();
--------
ColumnConfig col = factory.newColumnConfig(<'''columnId'''>, false);
col.setNeed (<Attribute>); // Specify the attribute which will decide the
row is pre selectable or not.
col.setDataStoreOnly (true); // this will make your Column hidden
table.addComponent (col);
table.setPreSelectableColumn (col);
2. 根据选择器 ID 配置新建的数据实用程序:
<Service name="com.ptc.core.components.descriptor.DataUtility">
<Option serviceClass="<DataUtility>" requestor="java.lang.Object"
selector="<selectorId>” cardinality="duplicate"/>
</Service>
TableConfig table = factory.newTableConfig ();
--------
ColumnConfig col = factory.newColumnConfig(<columnId>, false);
col.setNeed (<Attribute>); // Specify the attribute which will decide
the row is selectable or not.
((JcaColumnConfig)col) setDataUtilityId (<selectorId>);
col.setDataStoreOnly (true); // this will make your Column hidden
table.addComponent (col);
table.setPreSelectableColumn (col);
配置列换行
默认情况下,我们可以标记列以对其内容进行换行。也可通过客户端列级别操作对列进行换行。例如:
ColumnConfig descritionColumn = factory.newColumnConfig(NAME, true);
descritionColumn.setColumnWrapped(true);
* 
以上屏幕截图显示在“名称”列中启用了文本换行,以及“上次修改时间”列的下拉菜单中的“自动换行”选项。
通过 setComponentProperty 子标记设置的其他属性
getModel 标记属性
getModel 根据提供的组件描述符和查询参数创建组件模型。生成的模型会分配给由 var 属性指定的作用域变量。其标记类为 com.ptc.core.components.tags.components.GetModelTag,正文内容为 "scriptless"。
配置表格 - 添加帮助图标
如果在构建器中设置了帮助上下文,则帮助按钮将出现在表格/树的右上角:
// sets the help topic to use from the Windchill Help Center
tableConfig.setHelpContext("HelpTopicName");
如果表格/树仍在 jsp 中定义,而不是使用构建器定义,则添加帮助主题将如下所示:
<renderTable model="${tableModel}" helpContext=" HelpTopicName"/>
单击 "?" 按钮时,系统将打开一个弹出窗口,该窗口将显示该表格的帮助主题。
为列指定数据实用程序
数据实用程序允许开发人员对低级别数据采集 API 返回的数据进行后处理和/或扩充。附加的信息可由其他查询、服务调用或通过 Java 代码获取的任何其他内容返回。可通过在表格配置中使用 setDataUtilityId() 为列指定数据实用程序。
ComponentConfigFactory factory = getComponentConfigFactory();
TableConfig table = factory.newTableConfig();
ColumnConfig col = factory.newColumnConfig("iconType", true);
col.setDataUtilityId("typePicker.iconType");
table.addComponent(col);
要注册数据实用程序,需要输入 *service.properties 特性。示例条目如下:
<Service name="com.ptc.core.components.descriptor.DataUtility">
<Option serviceClass="com.ptc.windchill.enterprise.picker.type.
dataUtilities.IconTypeDataUtility"
requestor="java.lang.Object"
selector="typePicker.iconType"
cardinality="duplicate"/>
</Service>
将表格列配置为超链接
将超链接添加到表格数据中。
我们可以为表格中的特定列指定链接。当用户单击该链接时,将打开新页面 (信息页面)。可通过在表格构建器中将 setInfoPageLink() 设置为 true 来完成此操作。
例如:
ComponentConfigFactory factory = getComponentConfigFactory();
TableConfig table = factory.newTableConfig();
ColumnConfig col = factory.newColumnConfig("name", true);
col.setInfoPageLink(true);
table.addComponent(col);
这会导致名称列显示为超链接。
配置表格 - 创建自定义视图
如果要将自定义视图配置到表格中,则表格构建器应实现接口 ConfigurableTableBuilder。接口 ConfigurableTableBuilder 仅具有一种方法:
ConfigurableTable buildConfigurableTable(String id) throws WTException;
该方法会返回实现接口 ConfigurableTable 的类的实例。默认 JCA 实现由类 JCAConfigurableTable 提供。
需要使用用于 JCA 的表格视图扩展 com.ptc.core.htmlcomp.components.JCAConfigurableTable 类。
与 9.x 版本相同,在 service.properties.xconf 中,无需映射到此类。
在实现 getOOTBTableViews 和定义预设视图时,务必使用正确的列 ID。公用属性的列 ID 在 com.ptc.core.components.descriptor.DescriptorConstants.ColumnIdentifiers 中进行定义。如果在此处未找到该列,则最好使用表格所含类型的可用属性报告。可以在“工具”链接内的“自定义”选项卡下找到“可用属性”报告链接。
如果实现了多个表格视图,则显示的当前视图将是列表中的第一个视图 (按字母顺序) 或在 getOOTBActiveViewName 方法中设置的表格视图。
在当前视图列表中选择“自定义...”会启动显示可配置表格视图的弹出窗口。在此,可以使用工具栏操作来添加和移除其他表格视图。
对于该列表中的每个视图,系统均会提供一个将该视图设置为“活动”的操作。通过使用此操作,可将任何视图设置为默认视图。示例:
public class MyTableBuilder extends AbstractConfigurableTableBuilder {

@Override
public ConfigurableTable buildConfigurableTable(String tableId)
throws WTException {
return new MyConfigurableTable();
}

/* an internal static class */
private static class MyConfigurableTable extends JCAConfigurableTable {

}

}
设置表格大小限制
可使用表格大小限制首选项设置可在客户端的表格中提取的最大行数。
如果表格的数据多于在首选项中设置的表格大小,则下一个/上一个链接将显示在页脚中以浏览数据:
在向导中使用表格
保存表单数据
可使用表格组件来编辑数据。由于表格使用的是缓冲视图,并非所有对象都会始终保留在 DOM 中,因此可能需要进行一些特殊处理,以确保根据需要保存数据。
表格中的数据全部保存在表格数据存储的后台。用户更新字段时,默认的处理方式是将更新保存到此存储中。在某些情况下,可能无法使用默认的处理方式。此外,提交向导时会呈现表格中的任何隐藏行,以确保所有数据在表单中始终处于可用状态。
向导表格限制
由于浏览器安全限制,您无法将浏览器文件输入字段保存到表格的数据存储中,并使用值对其进行重新呈现。这意味着,当执行可从存储中刷新网格的操作 (拖放、锁定、在缓冲表格中滚动等) 时,输入到浏览器文件输入字段中的任何值都将丢失。由于存在这些限制,因此建议您不要将文件输入字段放在可编辑表格中。
如果必须在可编辑表格中包括文件输入字段,则应将其配置为禁用可能导致值丢失的网格功能。以下网格功能将会禁用:
拖放列
列锁定
用于大表格性能改进的行缓冲
在表格中查找
仅查看选定对象
对移除表格中的大量行进行性能改进
只有将“文件上载”首选项设置为使用默认的浏览器文件输入时,才会禁用网格功能。为此,请将以下标记添加到向导 JSP 中:
<jca:setTablePlugin ptype=”gridfileinputhandler”/>
“创建多个文档”向导中的“属性”表格以及可在许多向导 (例如“新建文档”和“新建更改请求”) 中找到的“附件”向导步骤中的“附件”表格已配置为关闭网格功能,原因在于这些向导的可编辑表格包含文件输入字段。
这对您有帮助吗?