收到数据后,我想从SmartTable的视图设置中删除几列。
例如:
红色边框内的字段在视图设置上不可用。 我尝试了以下操作,但是不起作用。
var appMode = null;
sap.ui.controller("MA_Reporting.ext.controller.ListReportExt", {
onInit: function () {
//Model-Instanz holen
var oModel = this.getOwnerComponent().getModel();
var oSmartTable = this.getView().byId("listReport");
oSmartTable.setIgnoredFields("Lo,Lo100,Lo13");
//var oSmartTable = this.getView().byId("listReport");
var that = this;
this._getAppParameters()
.then(function (oData) {
appMode = oData.getAppParameters.Appmode;
var hostname = window.location.hostname;
var oSmartTable = that.getView().byId("listReport");
var orgsichtFilter = that.getView().byId("listReportFilter").getAllFilterItems().find(function (oElement) {
return oElement.getProperty("name") === "Orgsicht";
}).getControl();
if (hostname != "example.com") {
// Ausblenden Flag "öffentlich" bei Anlegen von Filter-Varianten
that.getView().byId("listReportFilter")._oSmartVariantManagement.setShowShare(false);
// Ausblenden Flag "öffentlich" bei Anlegen von Tabellen-Varianten
that.getView().byId("listReport")._oVariantManagement.setShowShare(false);
}
var variantManagement = that.getView().byId("listReport")._oVariantManagement;
//Model-Instanz holen
var oModel = that.getOwnerComponent().getModel();
variantManagement.getVariantItems().forEach(function (varItem) {
if (varItem.getText() == "liste" && appMode == "FI_ASSI") {
variantManagement.removeVariantItem(varItem);
}
});
// Default-Wert von Dropdown-Liste "Orgsicht" auf "Alle Mitarbeiter" setzen für ASSI-Rolle
if (appMode == "FI_ASSI") {
orgsichtFilter.setSelectedKey("TEST_ASSI_01_");
oSmartTable.setIgnoredFields("Lo,Lo100,Lo13");
}
}, function (oError) {
console.log(oError);
});
},
_getAppParameters: function () {
var oModel = this.getOwnerComponent().getModel();
return new Promise(function (resolve, reject) {
oModel.callFunction("/getAppParameters", {
method: "GET",
urlParameters: null,
context: null,
success: function (oData) {
resolve(oData);
},
error: function (oError) {
reject(oError);
},
});
});
},
onExit: function () {},
onBeforeRendering: function () {},
onAfterRendering: function () {
}
});
如您在上面的代码中看到的,oSmartTable.setIgnoredFields("Lo,Lo100,Lo13");
行我试图隐藏该列,但是它不起作用。我究竟做错了什么?
答案 0 :(得分:0)
在smartTable的XML定义中,使用属性ignoreFromPersonalisation并添加不应显示的字段名称。 这是一个示例:
<smartTable:SmartTable
id="SmartTableID"
ignoreFromPersonalisation="Lo,Lo100,Lo13">
答案 1 :(得分:0)
您可能想看一下API:
setIgnoredFields:
为属性ignoreFields设置一个新值。 SmartTable控件必须在OData元数据中忽略的字段的CSV。 注意: 没有完成验证。请确保您不添加空格或特殊字符。 当使用null值或未定义的值调用该属性时,将恢复该属性的默认值。
setIgnoreFromPersonalisation:
为属性ignoreFromPersonalisation设置一个新值。 个性化对话框中未显示的字段的CSV。 注意: 没有完成验证。请确保您不添加空格或特殊字符。 当使用null值或未定义的值调用该属性时,将恢复该属性的默认值。
您可以看到setIgnoreFromPersonalisation确实完成了您要做的事情,其中setIgnoredFields方法与OData服务有关。
您应该始终使用新的方法或属性来查看API 之前: https://sapui5.hana.ondemand.com/1.54.8/#/api/sap.ui.comp.smarttable.SmartTable