6
votes

XTRAGRID SUITE - Y a-t-il un moyen d'ajouter un bouton ou un lien hypertexte à une cellule?

Je travaille avec la suite Xtragrid faite par DEVEXPRESS. Je ne trouve aucune sorte de fonctionnalité pour le faire, mais je suis curieux si vous pouvez ajouter un bouton ou un lien hypertexte à une cellule de grille.

Contexte: J'ai une liste d'événements. Chaque événement a une heure, un démarrage / fin et une catégorie (utilitaire et entretien). Il peut y avoir des événements de départ et des événements d'arrêt. Ayant fait mon analyse du problème, j'ai décidé qu'avoir un temps de départ et une durée de recouvrement pour chaque événement ne fonctionnerait pas.

Donc, si un événement commence, j'enregistrerais l'heure actuelle à l'objet événement et définir l'événement "Démarrer". Je voudrais ajouter un bouton / hyperlien "stop" à une cellule de cette rangée. Si l'utilisateur souhaite enregistrer un événement des extrémités, le type d'événement, etc. serait copié à un nouvel événement avec le type 'Stop' et le bouton disparaîtrait.

J'espère que cela a du sens.

Edit: La réponse d'Aaronaught est en fait meilleur que ce que j'avais demandé à l'origine (un bouton), donc j'ai donc mis à jour la question. De cette façon, quiconque cherche à mettre un hyperlien dans une cellule peut bénéficier de son exemple :)


0 commentaires

4 Réponses :


15
votes

Je préfère utiliser du texte de style hyperlien en remplaçant le code de dessin et en manipulant les événements de déplacement / clic de la souris, car les boutons ne sont pas trop bien à la hauteur de la rangée typique d'une grille. Cependant, si un bouton est vraiment ce que vous voulez, vous devriez pouvoir faire cela à l'aide du dépôt repositoritorittembuttonedit comme type d'éditeur.

Si vous êtes intéressé par le premier, laissez un commentaire et je 'll Mettez à jour cela avec un exemple. Sinon, comme mentionné, il suffit d'utiliser le repositoritoritembuttonedit . Vous pouvez modifier ses propriétés pour prendre la cellule entière si vous le souhaitez, puis rendre la colonne une taille fixe de sorte que le bouton ne soit pas étiré.


Mise à jour: Je pose un exemple de code pour le "joli lien hypertexte" ci-dessous, que j'aime beaucoup mieux qu'une cellule de lien hypertexte standard parce que (a) il semble plus agréable, (b) il donne des commentaires survole et (c) que vous pouvez changer. le curseur si vous voulez (j'utilise une méthode utilitaire pour obtenir le curseur de la main native du système d'exploitation, qui a un aspect plus 3D que Winforms 'intégré).

Note à la note non Les utilisateurs de DevExpress lisent ceci: J'utilise presque une technique identique pour la norme system.windows.forms.listview . Microsoft utilise ce motif de l'UI un peu dans Vista et Windows 7 et il est bon d'apprendre à faire, même si le résultat n'est pas un parfait réplique. xxx

quelques notes sur ce code:

  • MyItem est le type de données que vous avez liée à la vue de la grille. Peut-être que c'est un datarow ou peut-être qu'il s'agit d'un type personnalisé si la source de données est un ilist .

  • mycolors est une classe d'utilité qui définit un couple de champs de couleur statique de champs utilisés pour l'interface utilisateur. Vous pouvez remplacer les références à ceux-ci avec des couleurs codées dur si vous n'allez jamais faire cela sur une grille.

  • Je ne sais pas la mise en cache de la police , bien que vous puissiez probablement, car il n'y en a probablement que deux.

  • La logique du curseur découle avec n'importe quelle autre logique de curseur que vous pourriez utiliser dans la grille (ce qui n'est pratiquement aucun dans presque tous les cas pour moi, il faut donc bien être bien).

  • Si vous souhaitez avoir plus d'une "colonne de liaison", vous devez gérer un champ HoverColumn Etat en plus du Hoverrowhandle , et change évidemment. ces comparaisons d'égalité à colonnes à rechercher plusieurs colonnes.

    Pour mes propres applications Winforms, je dispose d'un fournisseur d'extension qui me permet de joindre ce comportement à un GridView ou listview en lancant dans une liste de Nom de colonne / link text paires, mais ce code n'est qu'un peu trop long pour publier ici. L'exemple ci-dessus devrait vous aider à démarrer.


4 commentaires

Merci pour l'offre, j'aimerais voir un exemple de lien hypertexte. Entre-temps, je vais utiliser le repositoritoriotembuttonedit .


@ calico-chat: Vous êtes ici, comme promis!


Merci beaucoup pour tous les efforts que vous avez mis dans cette réponse. J'aimerais pouvoir pouvoir upouver plus d'une fois!


Old Post, mais utile ... Conserver Notez que faire cliquer pour travailler sur un XtragridView, je dois mettre des optionsBehavior.editables = FALSE pour éviter l'éditeur In-Place de la GridView et cliquez sur Grid Works



5
votes

Utilisez le REPOSITORITOTEMBUTTONEDIT et définissez le TextEditStyle vers HideTExteditor .


0 commentaires

1
votes

Vous pouvez utiliser RepositoryItemButtonedit: Sélectionnez votre colonne cible, dans "Propriétés" Cliquez sur "Columnedit" et sélectionnez "Nouveau", après que Sélectionnez "ButEdit". Cliquez sur votre grille et sélectionnez "Exécuter designers", sélectionnez "Référentiel d'éditeur en place" sur le groupe "Référentiel". Sélectionnez "RepositoryTemButtonedit1" (si vous n'avez pas changé de bouton Modifier le nom du composant) Sélectionnez l'onglet "Événement" et sélectionnez l'événement "Buttonprimé". Remplissez votre code dans cet événement. Si vous le souhaitez, masquez la partie éditeur de composant, sélectionnez Colonne cible, dans "Propriétés" Cliquez sur "Columnedit" Rechercher "TextEditStyle" et choisissez "HideTextEditortor".

Mais, une question! ?? Je veux ajouter une image dans mon bouton, quelqu'un a une idée?


1 commentaires

Je posterais cela comme une nouvelle question.



2
votes

Ceci peut maintenant être atteint à l'aide du contrôle RepositoireImyperLinedit.

Voir: 0 commentaires