2016-03-07 78 views
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);        
}, 

你有什么做的想法不工作在我的功能?

回答

0

您需要更改

sData[i].selected = "true";

sData[i].selected = true;

它看起来像分拣机并不像布尔值true自动识别字符串值"true"

相关问题