2010-06-12 28 views
1

Dans une application ASP.NET 2.0, je souhaite autoriser un utilisateur à sélectionner un objet MenuItem, même si l'utilisateur ne clique pas le texte actuel de MenuItem, mais uniquement clique sur la zone en surbrillance qu'ASP.NET place autour de l'élément MenuItem actuellement sélectionné (représenté par la propriété DynamicHoverStyle.BackColor). Puisque BackColor affiche la même largeur pour chaque MenuItem dans un sous-menu, basé sur MenuItem avec le texte le plus long, je voudrais faire de la zone de frappe (zone cliquable) de chaque sous-MenuItem la même largeur (même dans la zone BackColor), quelle que soit la quantité de texte affichée dans chaque sous-menuItem individuel.Création de zones d'entrée de même largeur sur MenuItems dans ASP.NET 2.0 Menus incluant des éléments MenuItem ajoutés à l'exécution

Voici la configuration. J'utilise un menu sur une page MasterPage pour afficher un menu similaire sur chacune de mes pages. Certaines pages suppriment ce menu et certaines d'entre elles ajoutent MenuItems, parfois au niveau supérieur, ajoutant parfois des sous-menus à un MenuItem de niveau supérieur existant, et parfois les deux (ajout d'un MenuItem au niveau supérieur, puis MenuItems supplémentaires comme submenuitems à ce haut niveau nouvellement ajouté.

Ce menu a une orientation horizontale, et il est dynamique, en ce que seul le niveau supérieur est d'abord exposé, et les sous-menus sont affichés lors de la sélection.

au cours de tests d'utilisation Nous avons remarqué que les utilisateurs sélectionnaient un élément de menu de niveau supérieur pour exposer le sous-menu, puis sélectionnaient un élément de sous-menu, mais pas nécessairement en cliquant sur le texte de l'élément de sous-menu, mais en cliquant sur BackColor. le texte de certains MenuItems sont plus long que les autres, MenuItems avec texte court ont une zone BackColor plutôt grande. Lorsque l'utilisateur clique sur la zone BackColor, mais pas directement sur le texte MenuItem, rien ne se passe, car l'utilisateur n'a pas réellement cliqué sur la zone de frappe de l'élément de sous-menu. Bien qu'il existe des indices visuels sur la partie du MenuItem affichée qui est cliquable (le pointeur de la souris se transforme en curseur de lien lorsque la souris est positionnée sur le Texte MenuItem, mais pas quand elle survole BackColor), Ce comportement a troublé les utilisateurs. Ils ont mis en évidence un MenuItem et l'ont cliqué, mais rien ne s'est passé.

Je voudrais faire un clic sur un MenuItem réussi, même si l'utilisateur n'a pas cliqué sur le texte actuel de l'élément MenuItem, mais simplement cliquer sur la zone BackColor.

Il semble qu'il devrait y avoir une propriété quelque part pour contrôler la largeur de la zone active des MenuItems affichés, mais je ne le vois pas. Des suggestions, étant donné que je crée certains de ces MenuItems à l'exécution?

Répondre

2

Ajout de la classe css: .MenuClickArea {width: 100%; display: block;} et attribué cette classe à la DynamicMenuItemStyle et StaticMenuItemStyle du menu en question dans la page principale ASPX

semble faire l'affaire.

+0

Très agréable, et très propre (certaines des "autres solutions" que j'ai trouvées n'étaient pas propres, comme la solution qui a ajouté un bouton de lien à chaque élément de menu). Mon menu comprend uniquement des éléments de menu dynamiques, j'ai donc seulement besoin de définir le DynamicMenuItemStyle. Cependant, si j'avais des éléments de menu statiques, j'aurais aussi besoin d'ajouter le StaticMenuItemStyle. Encore une fois, merci. Très bonne réponse. –