0
votes

AG-Grid QuickFilter Modification des colonnes à la recherche de programme programmatique

J'ai besoin d'un filtre de recherche rapide, où l'utilisateur peut sélectionner les colonnes recherchées. Je n'ai pas réussi à mettre en œuvre ce comportement. J'ai essayé ceci:

this.columns.forEach(column=>{
            if (this.globalSearchSelectedColumns.indexOf(column.field)>-1) column.getQuickFilterText = (params)=> params.value.name;
            else column.getQuickFilterText = ()=> '';
        });
this.grid.api.setColumnDefs(this.columns);
this.grid.api.onFilterChanged();
this.grid.api.resetQuickFilter();


0 commentaires

3 Réponses :


2
votes

Afin d'appliquer sélectivement QuickFilter CODE> formulaire AG-Grid, vous devez réécrire la propriété gequickfiltertext code> du colonne code>, en le définissant sur une fonction qui retourne une chaîne vide comme:

  1. Tout d'abord, vous devez extraire la colonne par une clé via le gridcolumnapi code> li>
  2. Ensuite, vous devez accéder à son Coldef CODE> LI>
  3. Enfin, tout ce que vous avez laissé à faire est de réécrire gequickfiltertext code> propriété li> ol>

    suppose, que dans votre composant de classe, vous avez une méthode désactiverfiltercol code> Il peut ressembler à ceci: p>

      disableFilterCol = () => {
        var col = this.gridColumnApi.getColumn("athlete");
        var colDef = col.getColDef();
        colDef.getQuickFilterText = () => "";
        console.log("disable Athlete");
      };
    


0 commentaires

-1
votes

Je pense que le problème ici réside dans la définition de la colonne mise à jour defs.
Pouvez-vous essayer ceci -

  let newColDef= [];
  this.columns.forEach(column=>{
            if (this.globalSearchSelectedColumns.indexOf(column.field)>-1)
            column.getQuickFilterText = (params)=> params.value.name;
            else column.getQuickFilterText = ()=> '';

            newColDef.push(column);
        });
this.grid.api.setColumnDefs(newColDef);
this.grid.api.onFilterChanged();
this.grid.api.resetQuickFilter();
this.grid.api.refreshHeader();   


1 commentaires

Cette solution ne fonctionne pas, je ne voulais pas voter négatif, mais par erreur, j'ai voté comme utile, ce qui n'est pas correct. Le seul moyen de supprimer un vote positif était de voter négatif. Désolé pour ça.



0
votes

Selon la solution de Nakhodkiin, je change mon code comme celui-ci: XXX

et ça marche;


0 commentaires