SAPUI5 sap.ui.table.Table

时间:2017-04-25 17:48:00

标签: properties save sapui5

有没有办法保存SAPUI5-Table的列设置? 如果用户注销并再次重新登录,则应保存表属性。 我要做的是保存可以通过用户交互操作的列设置。

财产:showColumnVisibilityMenu:true

我正在使用sap.ui.table.Table

var oTable = new sap.ui.table.Table({
    title: "Table Example",
    selectionMode: sap.ui.table.SelectionMode.Single,
    showColumnVisibilityMenu:true, // those settings should be saved
});

实际上我在这里找到了一个例子来预览列的选择(隐藏或显示):

http://jsbin.com/ceduc/1/edit?html,js,output

因此,当用户决定隐藏列" Key1 Label" (如下图所示)并且想要再次注销和重新登录,列不应该是可见的。应为用户保存表列的配置。怎么做?

enter image description here

2 个答案:

答案 0 :(得分:2)

这取决于您希望如何持久保存视图设置以及您拥有的后端。

如果您的ABAP后端具有统一的shell服务(作为Fiori的一部分提供),那么您可以使用标准的Personalization控制器/服务来保留设置。请参阅this demoUI5 documentationunified shell service docu

如果您有任何其他类型的后端或者您不想使用个性化服务,那么您应该保留(专用)模型中列的可见性。然后,您可以在后端保存此模型的内容(只需将其发送到专用的REST服务并将其保存在数据库中)。当用户重新登录时,您可以阅读此模型并简单地将其恢复。

另一种可能性是将其保存在浏览器的local storage中。您仍然需要上面的模型,但不是通过AJAX将数据发送到后端,而是将其保存到本地存储并在需要时从那里加载。

答案 1 :(得分:2)

您可以使用SAP的标准Shell个性化服务。 我就是这样做的。

  • 使用个性化对话框(sap.m.P13nDialog)管理表格的选项
  • 获取标准个性化服务提供商 var oProvider = sap.ushell.Container.getService("Personalization").getPersonalizer(oPersId);
  • 将您的桌面与个性化提供程序连接并激活 var oTablePersoController = new sap.m.TablePersoController({ table: oTable, persoService: oProvider }).activate(); 这将自动保存并检索变体/个性化。
  • 在用户按下相应按钮时启动个性化对话框

您可以将sap.ui.table.TablePersoController用于sap.ui.table.Table