0
我有一個帶搜索字段的表(多選模式)。有沒有辦法,當我搜索時,搜索結果的值將自動檢查表中的相應行。最初,雖然我可以搜索,但如果結果長度爲1,則在表上執行getItems(),在第一行上執行setSelected = true。該行被選中,但是當我退出搜索時,該行被取消選中。根據輸入搜索的值檢查表格行SAPUI5
var oSerialTable = new sap.m.Table({
mode: sap.m.ListMode.MultiSelect,
columns: [
...
],
items : {
path : "/results",
template: new sap.m.ColumnListItem({
cells: [
new sap.m.Text({ text: "{Sernr}" }),
new sap.m.Text({ text: "{Equnr}" }),
new sap.m.Text({ text: "{Lbbsa}" })
]
})
},
select : function(evt){
},
updateFinished: function(){
var aItems = oTable.getItems();
console.log(aItems);
if (aItems.length == 1){
console.log(aItems[0]);
aItems[0].setSelected(true)
}
}
});
oSerialTable.setModel(ocheckSerialBatchJsonModel);
var oSerialTableSearch = new sap.m.SearchField({
search: function(oEvent){
var filterValue = oEvent.getSource().getValue();
var aFilter = new sap.ui.model.Filter("Sernr", sap.ui.model.FilterOperator.EQ, filterValue);
var oItemTemplate = new sap.m.ColumnListItem({
cells: [
new sap.m.Text({ text: "{Sernr}" }),
new sap.m.Text({ text: "{Equnr}" }),
new sap.m.Text({ text: "{Lbbsa}" })
]
});
oSerialTableSearch.bindItems({path:"/SerialSet", template:oItemTemplate, filters: [aFilter]});
}
});
謝謝你的這個例子。如果我這樣做,會更容易。問題有沒有一種方式,當用戶搜索時,先前選擇的值仍然存在?所以如果我搜索123,123會被選中,如果我再次搜索124,它也會被選中(123也被選中)。我必須爲我的odata做一個post方法嗎?這就是我的想法。 – melai
如果您添加將代碼更改爲'item.selected =(item.selected || item.Sernr == filterValue || ...)',那麼可以展開選區,以便已選項目將保持選中狀態。 – schnoedel
我明白了!大!感謝您的幫助! – melai