SAPUI5 - 如何更改同一视图中的 table?

SAPUI5 - How to change the table in the same View?

情况:

想达到:

我已经尝试用每个 table 创建片段,并在更改 select 时调用我想要的片段。

片段 1 - table 1 片段 2 - table 2

select - oEvent (onChangeSelect) - getSelectedKey - if(key === 1) - 调用 fragment1,if(key === 2) - 调用 fragment2,但它给了我一个错误。

我不知道这是否正确,而且我没有在网上找到任何相关信息。 如果有人可以显示一些链接或给我一个关于如何执行此操作的想法,那就太完美了。

您可以使用绑定的概念来实现此目的而无需编码。假设您认为有类似的东西:

<Select><!-- ... --></Select>
<core:Fragment ... /><!-- table 1 -->
<core:Fragment ... /><!-- table 2 -->

首先,向您的应用程序添加一个模型,其中将包含有关应用程序状态的信息(当前哪些片段是可见的)。最简单的方法是从一个空的 JSON 模型开始。如果您熟悉 manifest.json 配置,请将其添加到此处。如果没有,您可以将其添加到您的组件 init 方法中:

this.setModel(new JSONModel(), "config");

这样,新的空模型就可以在应用程序的所有视图中以 "config" 的名称使用。

现在,我们将添加一个可见性标志,它将控制您的片段(表)的可见性,并且可以通过 select:

进行更改
<Select selectedKey="{config>/selectedFragmentKey}">
  <core:Item key=""              text="Please choose one" />
  <core:Item key="showFragment1" text="Show Fragment 1"   />
  <core:Item key="showFragment2" text="Show Fragment 2"   />
</Select>

此新版本将在路径 /selectedFragment 中的配置模型中存储 selected 项的密钥。向片段(表)添加可见性标志:

<!-- table 1 is only visible if "Show Fragment 1" was selected -->
<Table visible="{= ${config>/selectedFragmentKey} === 'showFragment1'}" .../>
<!-- table 2 is only visible if "Show Fragment 2" was selected -->
<Table visible="{= ${config>/selectedFragmentKey} === 'showFragment2'}" .../>

大功告成。

这里的主要课程:学习使用绑定。

如果我对问题的理解正确,您将有一个选择控件(有 2 个条目),并且在视图中有一个 table。根据选择项,您希望在任何给定时间点显示 table 之一。我在这里还假设 tables 仅在当前视图中纯粹使用,而不是真正的“可重复使用”的东西 - 它在应用程序的不同位置使用(然后呈现片段的使用矫枉过正)。

我假设,两个 table 都绑定了(尽管绑定到不同的数据集)。

在那种情况下,考虑使用适当的table的“可见”属性到“假”。

记住 - 所有 UI 组件,包括 table 继承自 sap.ui.core.Control - 它具有“可见” 属性.

在 API 中 table 参考:https://sapui5.hana.ondemand.com/#/api/sap.ui.table.Table%23methods/Summary

如果向下滚动到“借自:”部分,您将看到“setVisible”和“getVisibe”方法。

因此,如果在选择更改期间触发事件,您可以使用上述方法获取 table 控件并设置可见性。

或者,您也可以直接在 XML 中的 table 控件上设置表达式绑定,其计算结果为“true”或“false”(可能使用格式化程序)。

如果您需要这方面的更多信息,请告诉我。

此致, 戈帕尔奈尔。