9
votes

Menu contextuel spécifique à la colonne pour les primesFaces DataTable

Comment puis-je définir le menu contextuel de chaque colonne différemment dans les principaux pour les cartes de données? Mettre intérieur ne fonctionne pas correctement. Je veux que le menu contextuel soit différent en fonction de l'utilisateur de la colonne cliquée sur le bouton droit de la souris.

Ceci ne fonctionne pas (le menu contextuel est créé de la même manière pour toutes les colonnes): xxx

Comment ajouter un menu contextuel spécifique à colonne dans PremiersFaces DataTable soit à l'aide de composants PF, d'extension de composants PF ou d'ajout de JavaScript personnalisé?


2 commentaires

Avez-vous déjà compris cela?


Pas encore. Je suis coincé sur une autre tâche en ce moment, donc ce sera quelques jours avant que je puisse essayer la solution de @ kian


3 Réponses :


2
votes

facultatif pour l'attribut définit quel composant le contextMenu est attaché à. Lorsque pour n'est pas défini, le contexteMenu est attaché au sens de la page, cliquez avec le bouton droit de la souris sur n'importe où sur la page affichera le menu.

C'est ce que Documentation PremiersFaces indique à propos de la balise contextuelle . Donc, dans la façon dont vous avez, il est attaché au sens de la page. Utilisation de pour Attribut, vous pourrez vous intégrer avec les composants PremierFaces, mais probablement non avec une colonne de table spécifique.

Aussi DataTable La documentation suggère que vous ne pouvez le faire que lorsque vous faites une sélection dans la table, car il semble qu'il a des moyens spéciaux de l'adapter aux nœuds d'arbre .

Cependant, je vous recommande vivement de regarder à travers les docs avant de demander.


1 commentaires

J'ai également essayé d'attribuer l'attribut - aurait dû mentionner dans la question initiale. Habituellement, vous pouvez remplacer l'attribut "pour" avec un composant de placement à l'intérieur du composant cible. Quoi qu'il en soit, cela se traduit par erreur java.lang.classcastException: org.primefaces.component.column.Column ne peut pas être jetée à org.primefaces.component.api.widget. Néanmoins, il devrait être possible de joindre le menu contextuel à une colonne spécifique à l'aide de Code JavaScript personnalisé ...



4
votes

Une autre manière est d'utiliser la P: Menubutton à la place. Le P: Menubutton peut être changé pour ressembler à un P: contextmenu Il s'agit de styleclass.

  1. Créer une styleclass personnalisée pour changer la flèche vers le bas p>

    .contextButton .ui-state-default .ui-icon{
        background:url(YOUR_IMAGE_PATH);
    }
    
  2. Créez une styleclass personnalisée pour masquer la bordure et l'arrière-plan p>

    . contextbutton strong> .ui-boutons {frontière: aucun; Contexte: Aucun; } p>

    . contextbutton strong> .ui-button.ui-state-orthover, .ui-button.ui-state-focus, .ui-bouton.UI-State-actif {Border: Aucun; Contexte: Aucun; } p> blockQuote> li>

  3. Utilisez la styleclass personnalisée dans le P: menubutton p>


    P: Menuiem ici
    P: menubutton> p> blockQuote> li> ol>

    Vous pouvez renvoyer ici Pour un exemple de travail p> p>


2 commentaires

J'aime l'idée - c'est probablement l'approximation la plus proche de ce dont j'ai besoin ici. Avec certains peaufinages, il devrait également être possible de déclencher la menuduton sur un clic droit, ainsi que de simuler le menu contextuel. Va essayer cela et revenir


Moi aussi, je pense que c'est la seule solution.



7
votes

Avez-vous essayé (je viens de tester avec Premefaces 3.5): ContextMenu peut être attaché à n'importe quel composant JSF, chacune des lignes de primefaces DataTable dispose d'une pièce d'identité privée et dynamique (ex :: Carlist: 0: Test1: Carlist: 1: Test1 ...), donc je pense que vous devriez utiliser contextMenu à l'intérieur de la colonne: xxx

si vous souhaitez spécifier la ligne: xxx


8 commentaires

Non ça ne marche pas. Cela met simplement un menu contextuel spécifique par colonne. Pas du tout ce que je veux.


Oh jeez. Désolé rongnk - je suis un idiot. Je vois que cette question n'est même pas ma question.


Oh, c'est drôle, rien du tout :)


Voici ma question qui a été faussement fermée en tant que duplicata de cette question par un membre Idiot Stackoverflow: Stackoverflow.com/Questtions/16099698/... aidez-moi à y répondre et plus de 50 est le vôtre.


Oh, vous pouvez définir pour spécifier la ligne.


Avec moi, la réputation ne veut pas dire, je l'ai testée, et ça marche bien pour moi, je veux juste aider d'autres personnes!


@Rongnguyen Avez-vous déjà fait contextuelMenu à l'intérieur de P: Horaire? Je ne peux pas faire fonctionner quand j'ai nié le contexte de contexte dans le calendrier.


@Halim Désolé, je n'ai pas travaillé avec JSF pendant un an, je n'ai donc pas d'environnement pour le tester.