Comment filtrer un tableau sur plusieurs colonnes dans SAPUI5
Je suis face à un problème dans SAPUI5, je ne peux pas résoudre.
J'ai une table avec une barre d'outils qui contient un champ de texte. La valeur de ce champ est utilisé pour filtrer toutes les colonnes de la table.
Je sais, j'ai créer plusieurs custome filtres. Mais je ne sais pas, comment mettre toutes les pièces ensemble. J'ai donc créé une méthode comme ceci:
filtering : function(value, oEvent) {
var oFilter1 = new sap.ui.model.Filter(this.byId("Column1"), sap.ui.model.FilterOperator.Contains, value);
var oFilter2 = new sap.ui.model.Filter(this.byId("Column2"), sap.ui.model.FilterOperator.Contains, value);
var oFilter3 = new sap.ui.model.Filter(this.byId("Column3"), sap.ui.model.FilterOperator.Contains, value);
var oFilter4 = new sap.ui.model.Filter(this.byId("Column4"), sap.ui.model.FilterOperator.Contains, value);
var allFilter = new sap.ui.model.Filter([oFilter1, oFilter2, oFilter3, oFilter4], false);
var oBinding = oEvent.getSource().getBinding("items");
oBinding.filter(allFilter);
}
Je l'ai trouvé ici
La méthode est appelée à partir d'une liveChange cas de la zone de texte. Je ne sais pas si j'ai besoin de la oEvent.
Quel est le premier paramètre de la "sève nouvelle.l'interface utilisateur.de modèle.Filtre()"? Je pensais que c'était les colonnes, ce qui est nécessaire.
D'où vient le nouveau filtre doit être déclenchée? Je voudrais utiliser le "tableau.filtre(allFilter)".
Je suppose, j'ai juste besoin d'un peu d'explications...
- Salut @Gorch: je ne vois pas que vous ayez accepté de répondre à votre question. A l'une des réponses répondre à votre question?
Vous devez vous connecter pour publier un commentaire.
oEvent
pour le filtre.table.filter(allFilter)
,table.filter(oEvent)
est un gestionnaire d'événement et est déclenché lorsque la table est filtrée. Vous devriez appelerfilter
desap.ui.model.ListBinding
à la table filter.Voir le code suivant:
désolé pour la réponse tardive mais j'ai juste compris moi-même. Vous avez besoin d'un bouton de travailler avec votre textfield. Voici le code qui devrait fonctionner:
Vous pouvez avoir à changer oInput à tout ce que vous avez nommé votre textfield. Vous pouvez également modifier l'endroit où vous placez le bouton. Voici le lien qui m'a aidé avec ma solution http://jsbin.com/xinucunidi/1/edit
d'avoir un prédicat qui fonctionne sur le nœud d'un modèle
J'ai découvert que vous pouvez passer: chemin d'accès: false dans le oFilterInfo
par exemple,
cette info peut ou peut ne pas être utile, il est livré sans aucune garantie;)
Vous pouvez également passer une chaîne vide pour le filtre constructeur à avoir accès à l'intégralité du nœud.
Voici un exemple de code pour filtrer client + contact à l'aide d'un filtre personnalisé fonction. Il a été utilisé avec suggèrent où cacher les doublons de sens. Vous probablement ne voulez utiliser pour le filtrage d'une table, sauf si vous avez vraiment ne veulent qu'une seule ligne.