当我尝试动态地对我的m.Table进行排序时,我遇到了问题。
我有一个Json,如下所示,为我的表提供数据。
{
"ListeArticles": [
{
"id": "00000000000XXXXXX",
"text": "XXXXXXX",
"lot": "LOT2055",
"qte": "25.0",
"unit": "L",
"selected": false
},
{
"id": "00000000000YYYYY",
"text": "YYYYYY",
"lot": "2514AAAA",
"qte": "200.0",
"unit": "L",
"selected": false
}
]
}
我桌子的第一列与"选中"作为一个复选框。 我的应用程序还包含一个搜索字段,我在其中输入" lot"。
我要做的是标记对应于" lot"在搜索字段中捕获并在表格的开头显示标记的行。 我没有选择相应行的问题,但排序不起作用。
但是,如果我直接在表格中选择一条线并单击搜索字段上的放大镜图标而没有“批次”信息,则排序有效......
我的XML视图:
<SearchField placeholder="Recherche..." search="onSearch" width="100%" />
<Table id="tableArticles" items="{path: '/ListeArticles'}" inset="false">
<columns>
<Column>
<Text text="Sélection" />
</Column>
<Column>
<Text text="Article" />
</Column>
<Column>
<Text text="Lot" />
</Column>
<Column>
<Text text="Quantité" />
</Column>
<Column>
<Text text="+ / -" />
</Column>
</columns>
<items>
<ColumnListItem>
<cells>
<CheckBox selected="{selected}" widht="1em" />
<ObjectIdentifier title="{text}" text="{id}" />
<Text text="{lot}" />
<Input value="{qte}" type="{Text}" description="{unit}"
fieldWidth="{30%}" />
<Panel><Button text="+" /><Button text="-" /></Panel>
</cells>
</ColumnListItem>
</items>
</Table>
在视图控制器中加载模型:
onInit: function() {
var oModel = new sap.ui.model.json.JSONModel("./model/articles.json");
this.getView().setModel(oModel);
},
我的功能:onSearch
onSearch: function(oEvent){
var sValue = oEvent.getParameter("query");
var sTable = this.getView().byId("tableArticles");
var sModel = sTable.getModel();
var sData = sModel.getProperty("/ListeArticles");
for(i=0;i<sData.length;i++)
{
if(sData[i].lot==sValue)
{
sData[i].selected = "true";
sModel.refresh();
};
};
var oBinding = sTable.getBinding("items");
var oSorters = new sap.ui.model.Sorter("selected",true,false);
oBinding.sort(oSorters);
},
你知道我的功能不起作用吗?
答案 0 :(得分:0)
您需要更改
sData[i].selected = "true";
到
sData[i].selected = true;
看起来排序器没有自动将字符串值"true"
识别为布尔值true
。