2016-03-07 75 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"

相關問題