
本教程旨在解决Maximo中自定义表格控件在保存记录后无法自动清空的问题。通过修改表格控件关联关系的`where`子句为永假条件,我们可以确保在应用启动和数据保存后,表格始终显示为空,从而实现仅用于数据录入的表格行为,而不显示任何已保存的记录。
Maximo自定义表格控件保存后清空数据的实现方法
在Maximo应用开发中,我们经常会遇到需要自定义表格控件来录入数据的情况。然而,一个常见的需求是,在用户保存了新录入的记录后,表格控件能够自动清空,不显示刚刚保存的数据,以便用户继续录入新的记录。虽然Maximo提供了Start Empty=true属性,但它通常只在应用程序首次加载时生效,并不能在数据保存操作后重新清空表格。本文将详细介绍如何通过修改表格控件的关联关系(Relationship)属性,实现这一功能。
1. 理解Maximo表格控件的数据加载机制
Maximo中的表格控件(Table Control)通常通过一个“关联关系”(Relationship)来获取和显示数据。这个关联关系定义了表格要从哪个业务对象(MBO)获取数据,以及通过何种条件(where子句)来过滤这些数据。当应用程序加载或数据保存后刷新时,Maximo会根据这个关联关系的where子句重新查询数据库,并更新表格显示的内容。
2. 解决方案:修改关联关系的where子句
实现保存后自动清空表格的关键在于,让表格的关联关系在任何时候都无法查询到数据,但同时又不妨碍用户添加新的行并保存。我们可以通过设置一个永假的where子句来实现这一点。
核心思想: 将表格控件所使用的关联关系的where子句设置为一个永远不会为真的条件,例如 3 = 4。
工作原理:
- 数据加载时: 当应用程序启动或表格需要刷新数据时,Maximo会执行带有3 = 4条件的查询。由于3永远不等于4,查询结果将始终为空,表格因此显示为空。
- 添加新行: 尽管查询结果为空,Maximo表格控件仍然允许用户通过“新行”功能添加新的记录行。这些新行的数据是暂存在内存中的,尚未保存到数据库。
- 保存数据: 当用户点击保存按钮时,新添加的记录会被保存到数据库中。保存操作完成后,Maximo通常会触发一次数据刷新。此时,由于关联关系的where子句依然是3 = 4,表格会再次尝试查询数据,并再次得到空结果,从而实现表格的自动清空。
3. 实现步骤
要应用此解决方案,您需要通过Maximo的应用程序设计器(Application Designer)进行配置。
打开应用程序设计器: 登录Maximo,导航至“系统配置” -> “平台配置” -> “应用程序设计器”。
选择目标应用程序: 找到并打开包含您的自定义表格控件的应用程序。
定位表格控件: 在设计器界面中,选中您的自定义表格控件。
-
检查并修改关联关系:
- 在表格控件的属性窗口中,找到“关联关系”(Relationship)属性。这个属性通常指向一个在业务对象(Object)中定义的关联。
- 如果表格控件直接指定了where子句,则修改该子句。
- 如果表格控件通过一个MBO关联(例如,timesheetline)来获取数据,您需要修改该MBO关联的定义。这通常意味着您可能需要在“数据库配置”中修改MBO的关联定义,或者在应用程序XML中直接覆盖该关联的where子句。
- 推荐做法: 在应用程序设计器中,选中表格控件,在“高级”选项卡下,直接找到where子句(或称“条件”)字段。将其值设置为 3 = 4。
示例(XML配置片段): 如果您直接编辑应用程序的XML,它可能看起来像这样:
请注意,whereclause属性会覆盖或补充在MBO关联定义中的条件。确保您的表格控件或其直接关联的whereclause被设置为3 = 4。
保存并测试: 保存应用程序的更改,然后注销并重新登录Maximo,打开修改后的应用程序进行测试。
4. 注意事项与适用场景
- 数据不可见性: 采用此方法后,该表格控件将永远不会显示任何已保存的记录。它将纯粹作为一个数据录入界面存在。如果您需要同时查看和编辑现有记录,则此方法不适用。
- 仅适用于数据录入: 此方案非常适合那些设计为仅用于批量或连续录入新数据,而无需回显历史记录的表格。
- 关联关系正确性: 确保除了where子句之外,表格控件的关联关系本身定义是正确的,能够将新录入的数据正确地关联到主对象并保存到数据库。
- 性能影响: 这种“永假”查询对性能几乎没有影响,因为它总是返回空集,查询效率非常高。
5. 总结
通过巧妙地利用Maximo表格控件的关联关系where子句,并将其设置为一个永假的条件(如3 = 4),我们可以有效地解决自定义表格控件在保存数据后无法自动清空的问题。这种方法提供了一个简单而强大的机制,使得表格控件能够专注于数据录入功能,极大地提升了用户体验,尤其适用于需要连续录入大量新记录的场景。在实施前,请务必理解其对数据可见性的影响,并根据您的具体业务需求进行权衡。









