2
votes

Ag-Grid: verrouille la position d'une colonne sur la dernière colonne

Je me demande s'il existe un moyen de verrouiller efficacement une colonne dans Ag-Grid afin que la colonne soit toujours la toute dernière colonne quoi qu'il arrive.

<½Background

Ce que je cherche en fin de compte, c'est d'éviter l'espace vide après la dernière colonne si la taille de la grille est plus large que toute la largeur de colonne combinée. Cela permet de donner à la grille un aspect professionnel et cohérent, d'autant plus que les lignes paires / impaires sont généralement rendues dans des couleurs différentes. Je préférerais que l'espace vide ait également cette couleur d'arrière-plan alternée.

Etant donné qu'il ne semble y avoir aucune propriété de grille qui force la grille à rendre l'espace vide à la fin sous forme de pseudo-colonne, j'envisage donc d'ajouter manuellement une pseudo-colonne de telle manière que:

  • la pseudo-colonne n'a pas d'en-tête
  • la pseudo-colonne ne contient aucune donnée
  • la pseudo colonne n'est pas triable ( obtenue via sortable: false )
  • la pseudo colonne n'est pas redimensionnable manuellement ( obtenue via resizable: false )
  • la pseudo-colonne est la seule colonne qui a suppressSizeToFit: false
  • verrouiller la pseudo-colonne pour qu'elle soit toujours la dernière colonne afin que l'utilisateur ne puisse pas faire glisser une colonne vers le côté droit de celle-ci

J'ai trouvé un moyen de tout réaliser, sauf le dernier élément de la liste ci-dessus. Je sais que je peux suppressMovable: true mais cela garantit seulement que la colonne elle-même n'est pas déplaçable, cela n'empêche pas l'utilisateur de faire glisser une colonne vers le côté droit de celle-ci.

En fait, je cherche quelque chose de similaire à lockPosition mais au lieu de verrouiller la colonne à l'avant, je veux verrouiller la colonne jusqu'à la fin.


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser l'API sizeColumnsToFit () pour que les colonnes ajustent la taille pour s'adapter à la grille horizontalement. En utilisant cette API, il n'y aura pas d'espace vide après la dernière colonne, mais assurez-vous que vous n'avez pas spécifié la largeur pour au moins une colonne. C'est la colonne qui s'agrandira / rétrécira pour s'adapter à la taille de la grille.

Appelez sizeColumnsToFit () après le déclenchement de l'événement gridReady .


1 commentaires

Malheureusement, je ne peux pas modifier la taille des colonnes de cette façon. Les tailles de colonne sont entre les mains de l'utilisateur et ont persisté dans la configuration de son profil sur le serveur, de sorte que peu importe où et quand il lance l'application, le look est le même. sizeColumnsToFit ajuste la largeur des colonnes visibles, par conséquent, en fonction de l'emplacement de votre défilement horizontal et de la taille de votre écran, la taille des colonnes de la grille change. Ce que je pourrais faire, c'est créer une pseudo-colonne comme dernière colonne, et la seule qui puisse sizeColumnsToFit. Le bit fit fonctionne, le "comme la dernière colonne" est le bit avec lequel je me bats



1
votes

Gardez un œil sur le problème AG-3326 actuellement ouvert dans le backlog d'ag-grid https : //www.ag-grid.com/ag-grid-pipeline/

"Autoriser le verrouillage (lockPosition) d'une colonne à toujours être la première ou la dernière colonne (actuellement, seule la première colonne est prise en charge)"


0 commentaires

0
votes

Voici une solution de contournement efficace pour verrouiller la colonne la plus à droite jusqu'à ce que AG-3326 soit implémenté.

onColumnMoved: params => {
  const columnCount = params.columnApi.getAllColumns().filter(c => c.isVisible()).length;
  const maxIndex = columnCount - 2;
  if(params.toIndex > maxIndex) {
    params.columnApi.moveColumnByIndex(params.toIndex, maxIndex); 
  }
}

Toute colonne déplacée vers la droite de la colonne "verrouillée" est immédiatement déplacée à gauche de la colonne "verrouillé".


0 commentaires