SAPUI5 - 如何更改同一视图中的 table?
SAPUI5 - How to change the table in the same View?
情况:
- 2 个不同的 tables,1 个视图;
想达到:
- 当我更改 select 中的 selectedKey 时,我必须更改 table。
我已经尝试用每个 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”(可能使用格式化程序)。
如果您需要这方面的更多信息,请告诉我。
此致,
戈帕尔奈尔。
情况:
- 2 个不同的 tables,1 个视图;
想达到:
- 当我更改 select 中的 selectedKey 时,我必须更改 table。
我已经尝试用每个 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”(可能使用格式化程序)。
如果您需要这方面的更多信息,请告诉我。
此致, 戈帕尔奈尔。