2016-05-06 22 views
0

die meiste Zeit nutzte ich ein TextField und ein Image, um eine Suche in meiner Anwendung zu realisieren. Aber jetzt habe ich das SearchField in SAPUI5 gefunden. Mein Problem ist, wenn ich eine Suche durchgeführt habe, wird der Wert innerhalb des Feldes gelöscht. Gibt es einen Weg, dies nicht zu tun? Ich habe die API untersucht, aber ich kann eine solche Methode nicht finden. Oder muss ich es selbst programmieren?SAPUI5 Suchfeld

+0

Siehe - habe ich das richtig verstanden, Ihre Frage? – Bernard

+0

Ja, du hast es richtig verstanden, aber es könnte sein, dass ich in meinem Code etwas falsch gemacht habe. Wenn ein MenuItem angeklickt wird, sollte das Suchfeld gelöscht werden. Vielleicht gibt es etwas worng .... – Chris

+0

Möchten Sie das Suchfeld löschen? – Bernard

Antwort

0

Ich bin mir nicht sicher, warum der Text klärt.

Ihrer Ansicht nach sollten Sie etwas wie dieses:

<SearchField search="handleSearchPressed" /> 

Und Ihre Controller sollte/könnte wie folgt aussehen:

handleSearchPressed: function (oEvent) { 
    var sQuery = oEvent.getParameter("query"); 
    if (sQuery === "") { 
     return; 
    } 
    // perform a search 
} 

Nichts sollte Ihre Search löschen.
Siehe auch die Search Field Samples.

+0

Ok, ich schaue mir meinen Code zweimal an ... Vielleicht stimmt etwas mit dem Code für mein Textfeld nicht und weiß, dass mein Suchfeld jedes Mal gelöscht wird. Vielen Dank für Ihre Antwort. Ich werde bald antworten :) – Chris

+0

Können Sie mir Ihren Controller-Code und den View-Code zeigen? – Bernard

+0

Ich habe es unten hinzugefügt :) – Chris

0
Try this code <SearchField liveChange="onSearching" width="100%" /> 
In Controller 
onSearching:function(oEvt) 
     { 
      var filters = []; 
      var sQuery = oEvt.getSource().getValue(); 
      if (sQuery && sQuery.length > 0){ 
       var filter = new sap.ui.model.Filter 
        ("Uname", sap.ui.model.FilterOperator.StartsWith, sQuery); 
       filters.push(filter); 
      } 
      var list = this.getView().byId("idList"); 
      var binding = list.getBinding("items"); 
      binding.filter(filters); 
     }, 
0

<SearchField id="searchfield" liveChange="liveSearch" placeholder="search"/> 
 
<List id="list" select=""onSelect/> 
 

 
liveSearch : function(oEvent) 
 
var olist = this.getView().byId("list); 
 
var sValue = oEvent.oSource.mProperties.value.toLowerCase(); 
 
var oItems = olist.getItems(); 
 

 
for(var i=0; i<oItems.length; i++){ 
 
    
 
    var value1 = olist.mAggregations.oItems[i].mProperties.title; 
 
    var value2 = olist.mAggregations.oItems[i].mProperties.description; 
 
    
 
     if(value1.indexOf(sValue)>-1||value2.indexOf(sValue)>-1){ 
 
     oItems[i].setVisible(true); 
 
     } 
 
    } 
 
}

Dieser Code wird für die Listenelemente arbeiten, um meine Antwort verbindlich dh in "Master Detailvorlage"

+0

Verwendung sollte immer verwenden Methoden get: getSource(), getProperties(), getValue usw. – Pushpender

+0

verweisen diesen Code https://sapui5.netweaver.ondemand.com/sdk/#/sample/ sap.m.sample.ListSelectionSearch/code/List.controller.js – Pushpender