我要删除使所有字段从表(sap.m.table)中选择的复选框。
我尝试过:
var oTable = this.byId('MyTableId');
oTable._getSelectAllCheckbox().setVisible(false);
这对我不起作用。有没有办法在XML中将其设置为false? 我知道我可以使用CSS,但是只有在没有其他解决方案的情况下,我才想使用CSS。
答案 0 :(得分:1)
(又名响应表)
当前,尚无公开记录的API来启用/禁用显示sap.m.Table
上的“全选” -CheckBox。在这种情况下,最佳实践是扩展控件并相应地切换bPreventMassSelection
状态。
以下是示例中的摘录:https://embed.plnkr.co/pnpdRK7d7CxZXZ8s
sap.ui.define([
"sap/m/Table",
"sap/m/TableRenderer",
], function(Table, TableRenderer) {
"use strict";
return Table.extend("demo.control.MyResponsiveTable", {
metadata: {
properties: {
showSelectAll: {
type: "boolean",
bindable: true,
},
},
},
setShowSelectAll: function(bValue) {
this.bPreventMassSelection = !bValue;
this.setProperty("showSelectAll", bValue);
return this;
},
renderer: TableRenderer,
});
});
<demo:MyResponsiveTable xmlns:demo="demo.control"
showSelectAll="{/showSelectAll}"
mode="MultiSelect">
与_getSelectAllCheckbox
相比,应优先采用上述方法,因为:
_getSelectAllCheckbox
是私有方法。
CheckBox
)将在将来的UI5版本中破坏该应用。bPreventMassSelection
是一个简单的标志,已在内部依赖于sap.m.Table
/ .List
的其他控件中广泛使用。我们可以看到,如果启用了bPreventMassSelection
,则Table会跳过呈现“全选”复选框的显示。(又名网格表)
如果有人在寻找解决方案但使用sap.ui.table.Table
,请将enableSelectAll
属性设置为false
:
<table:Table xmlns:table="sap.ui.table"
enableSelectAll="false"
selectionMode="MultiToggle">
答案 1 :(得分:0)
oTable._getSelectAllCheckbox().setVisible(false);
按我的预期工作。
我将其添加如下:
this._myDelegate = {
onAfterRendering: function () {
if (typeof this._getSelectAllCheckbox === "function" && this._getSelectAllCheckbox().isA("sap.m.CheckBox")) {
this._getSelectAllCheckbox().setVisible(false);
}
}
};
oTable.addEventDelegate(this._myDelegate, oTable);
// Remove this._myDelegate from the table in `onExit` to avoid memory leak
确保您在var oTable = this.byId("MyTableId");
上具有正确的表控件。