SAPUI5和OpenUI5都提供了两种完全不同的数据表控件:在Fiori styleguide中称为“网格表”(sap.ui.table.Table)和“响应式表”(sap.m.Table)。 顾名思义,前者是响应式的,更适合移动应用程序,而另一种则更面向桌面。
注意
关于这两个控件的具体使用差异,请查询我的 一套适合 SAP UI5 开发人员循序渐进的学习教程里的对应文章,近期会发表。
简而言之,对于较大的数据集(> 1000 行)建议使用 ui 表 (sap.ui.table.Table),而在所有其他情况下使用响应式 m 表 (sap.m.Table) - 后者看起来更灵活简洁。
从技术上讲,这两个表格控件截然不同。 ui表是一个典型的有行和列的数据表,而m表实际上是一个列表(基于sap.m.ListBase),每个列表项被拆分成列。
API 也完全不同。 SAP UI5 应用无法从一张表的设计快速切换到另一张表,因此如果项目实施过程中发现自己需要另一张表的功能——基本上不得不重新编写所有代码。
我们期望从数据表中获得的所有方便的功能,如标题排序、列过滤器、列大小调整等,仅在 ui-table 中可用。
另一方面,ui-table 没有列宽优化器,所以基本上所有的列要么太宽要么太窄。 反过来,此功能仅在 m 表中可用, 这意味着后者不能手动调整列宽。
ui-table 使用虚拟滚动:当数据从一行跳到另一行时,网格保持不变。 这不适用于单元格中的图像,如果多行具有相似数据,这看起来也很奇怪。 另一方面,ui-table 可以自动调整它的高度以适合容器,而 m-table 不能。
当涉及到列、单元格或行分组等更高级的功能时,事情就变得复杂了。 出于某种原因,行分组只在 m 表中得到正确支持,而在 ui 表中则不支持。 合并单元格也是如此。 另一方面,分组列仅适用于 ui 表(尽管非常有限)。
列总计在任何情况下都是一个问题:虽然 m-table 根本不支持它们,但 ui-table 至少有粘底行,您可以在其中使用脚本放置总计。些固定行会受到所有内置排序和过滤功能的影响,因此使用 for totals 确实不是一件容易的事。 但是,两个表格都有页脚栏,所以如果您只需要一个总值,将它放在那里是相当容易的。
注意
关于这两个控件的具体使用差异,请查询我的 一套适合 SAP UI5 开发人员循序渐进的学习教程里的对应文章,近期会发表。