答案 0 :(得分:1)
如果您想让用户再次选择任何项目,我建议您使用sap.m. ActionSelect 或sap.m。 ComboBox 。基本选择控制。
如果是ActionSelect:使用forceSelection:false
关闭强制选择,并添加一个操作按钮,其中按下事件处理程序执行myActionSelect.close().setSelectedKey("");
。以下是一个示例:https://embed.plnkr.co/tk9ulw/
答案 1 :(得分:0)
您必须使用text =" All"为项添加一些键值。请查看jsbin work example。
var oModel = new sap.ui.model.json.JSONModel(
{
items:
[
{ KEY: null, LABEL: "-ALL-"},
{ KEY: "A", LABEL: "A"},
{ KEY: "B", LABEL: "B"},
{ KEY: "C", LABEL: "C"},
{ KEY: "D", LABEL: "D"}
]
});
var oSelect = new sap.m.Select({
items: {
path: "/items",
template: new sap.ui.core.Item({ key: "{KEY}", text:"{LABEL}" })
}
})
oSelect.setModel(oModel);
答案 2 :(得分:0)
在下面添加您设置模型的位置。
var oView = this.getView();
fnSuccess(oData,oResponse){
var value = {
ID : "All",
Route_Name : "All",
};
oData.results.splice(0,0,value); // oData your array of data
var oSelectData = {
PRODUCTS : oData
};
var oSelectJSON = new sap.ui.model.json.JSONModel();
oSelectJSON.setData(oSelectData);
oView.byId("id_select").setModel(oSelectJSON);
}
答案 3 :(得分:0)
FacetFilter控件适合您的要求。它具有选择列表中所有值的全部选择。
<FacetFilter
id="idFacetFilter"
type="Simple"
confirm="handleConfirm">
<lists>
<FacetFilterList
title="Route"
key="route"
mode="MultiSelect"
items="{
path: '/PRODUCTS'
}" >
<items>
<FacetFilterItem
text="{Route_Name}"
key="{ID}" />
</items>
</FacetFilterList>
</lists>
</FacetFilter>
答案 4 :(得分:0)
我是通过创建两个数组来实现的,一个是“All”键/值对,另一个是我的项目列表,然后将它们连接在一起。在JSON视图模型中,声明数组:
selections[];
在onBeforeRendering()生命周期方法中,检查是否填充了数组(&lt; 0),如果是,请读取包含列表的实体集:
onBeforeRendering: function() {
// Build the provinces list
if (this.getModel("view").getProperty("/selections").length === 0) {
this.getModel().read("/SelectionList", {
success: this._setSelections.bind(this)
});
}
成功后,构建数组并设置属性:
_setSelections: function(oResponse) {
var aSelections = [{
key: "",
text: "(All)"
}];
if (typeof oResponse.results !== "undefined") {
aSelections = aSelections.concat(oResponse.results);
}
this.getModel("view").setProperty("/selections", aSelections);
},
答案 5 :(得分:0)
与@vivek'的答案类似,在加载数据时附加一个All:
onHazardTabBarSelect : function(oEvent) {
var oTabBar = oEvent.getSource(),
sSelectedTabId = oTabBar.getSelectedKey(),
oSelectedTab = sap.ui.getCore().byId(sSelectedTabId),
sAssignmentPath = oSelectedTab.getBindingContext().getPath();
this._oModel.read( sAssignmentPath + "/assignedControls", {
urlParameters: {
"$expand": "control"
},
success: this.addControlSelectData.bind(this),
error: this.errorCallback.bind(this)
});
},
addControlSelectData : function(oEvent) {
var oSelectControl = this.byId("controlSelect"),
aControlResults = oEvent.results,
aResult = [{
"control" : {
id: "All",
name: "All"
}
}],
aData = aResult.concat(aControlResults);
oSelectControl.setModel(new sap.ui.model.json.JSONModel(aData));
},
答案 6 :(得分:0)
使用组合框并将selectAll添加到项目列表应该可以工作。然后,在选择更改事件上,可以检查是否已选择selectAll选项(通过使用oEvent.getParameter(“ changedItem”)),然后仅检查oEvent.oSource.setSelectedKeys(res),其中res是所有项目或仅如果取消选择selectAll选项,则为null。