0
当我尝试对m.Table进行动态排序时遇到问题。当选中复选框时排序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
}
]
}
我的表的第一列与“selected”作为复选框绑定。 另外我的应用程序包含一个搜索字段,我在其中输入“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);
},
你有什么做的想法不工作在我的功能?