Accueil > Forum > > > > DefaultButton du Panel ne fonctionne pas ?
DefaultButton du Panel ne fonctionne pas ?
vendredi 1 août 2008 à 16:51:20 |
DefaultButton du Panel ne fonctionne pas ?

karn2
|
Bonjour, j'ai une page contenant plusieurs couples textbox/bouton associés contenus dans des panels. J'ai donc essayé d'utiliser la propriété DefaultButon du panel pour faire en sorte que le clic sur un panel donne le focus au bouton qu'il contient. Avec une page contenant 2 panels : panel1 avec un button1 et panel2 avec un button2 Voila ce que j'ai essayé : - Dans l'editeur je met respectivement button1 et button2 a la propriété de panel1 et panel2 : -> résultat : ca ne fonctionne pas; lorsque je clic sur le panel1 ou le panel2 c'est toujours le button1 qui prend le focus. - Dans le page_load j'ai rajouté : Me.Panel1.DefaultButton = Me.button1.UniqueID (aussi testé avec ClientI) Me.Panel2.DefaultButton = Me.button2.UniqueID (aussi testé avec ClientID) -> résultat : idem Je précise que je travaille sous Visual Studio 2005 Professionel. Je ne comprends vraiment pas pourquoi cela ne fonctionne pas; je me serais bien passé complètement du focus des boutons (en mettant le UseSubmitBehavior des boutons à False) mais j'utilise des fonctions javascript pour afficher un message de confirmation. Merci pour votre aide !
|
|
vendredi 1 août 2008 à 19:23:43 |
Re : DefaultButton du Panel ne fonctionne pas ?

ggtry
|
Bonjour,
Je viens de faire un petit test pour voir en mettant le DefaultButton d'un panel1 à son button1, et celui d'un panel2 au button2 qui est dedans. C'est assez amusant parce que, en effet, button1 semble prendre le focus où que l'on clique sur la page (dans panel1, panel2 ou ailleurs). Mais en fait, si l'on clique sur un endroit quelconque de panel2, c'est bien button2 qui prend le focus (si l'on appuie sur entrée, c'est bien l'événement onclick du button2 qui a lieu, même si button1 semble encore avoir le focus en "bleuissant" sur les bords). Je ne comprends pas très bien ce que tu veux faire, cela dit... pourquoi cliquer n'importe où dans le panel pour donner le focus au button (ce qui marche d'ailleurs dans IE mais pas dans firefox apparemment) ?
GGtry
|
|
vendredi 1 août 2008 à 20:39:26 |
Re : DefaultButton du Panel ne fonctionne pas ?

karn2
|
Je suis rassuré que quelqu'un obtienne le même résultat que moi, je ne suis pas fou ! En fait mon problème c'est que si je n'utilise pas le defaultbutton des panels, le premier bouton de la page prend automatiquement le focus ce qui n'est pas du tout logique : lorsque l'utilisateur fait "entree", c'est toujours le meme bouton qui est déclenché quelle que soit le controle séléctionné et c'est vraiment peu intuitif.. Il me semble qu'un comportement normal serait que le bouton qui prend le focus soit celui qui correspond a ce que l'utilisateur est en train de faire. C'est pour ça que je veux mettre les controles qui "vont ensemble" dans le panel de manière a ce que ca soit le bon bouton qui recupere le focus lorsqu'on clic sur le panel ou un de ses controles. Y a t'il un moyen "simple" de faire ce que je demande ? En fait j'aimerais eviter d'avoir a gerer chaque controle avec du javascript.
|
|
vendredi 1 août 2008 à 21:16:36 |
Re : DefaultButton du Panel ne fonctionne pas ?

ggtry
|
Avec defautlbutton, si tu es dans le textbox d'un panel, le button du même panel sera utilisé. A présent, si tu cliques dans le panel en dehors du textbox, le focus sera bien sur le button du même 'panel' dans IE, mais pas dans Firefox (je n'ai pas testé sur d'autres navigateurs). Si tu veux qu'en cliquant n'importe où dans la zone du panel ce panel là soit actif, tu peux ajouter dans la balise de ton panel un événement javascript comme : onclick="document.getElementById('TextBox2').focus()" (en changeant bien entendu l'id du textbox selon le panel ; note que tu auras un avertissement 'validation (asp.net) : l'attribut etc.', mais ce n'est pas grave, ça marchera quand même. Si tu n'aimes pas voir s'afficher un avertissement, tu peux le faire dans le code par un attributes.add. Note bien qu'il faut mettre le focus sur le TextBox, pas sur le button, sinon tu n'auras plus accès à ton textbox...). Cela dit, est-ce bien utile ? la marche habituelle est d'entrer quelque chose dans un textbox, puis soit de cliquer, soit d'appuyer sur "entrée" (ou alors de faire autre chose), ce qui avec defautlbutton va mettre le focus sur le bon bouton (même si en effet on a l'impression visuelle que le focus reste sur le button1 dans ton cas (dans IE) : mais le focus réel, si tu es dans le panel2 est bien sur button2). NB. je me suis bien entendu trompé en disant que button1 semblait prendre le focus si l'on cliquait n'importe où sur la page en dehors des panel. Mais peut-être n'est-ce pas une bonne réponse à ton problème, car encore une fois, je ne comprends pas pourquoi dans tes événements clients tu aurais besoin de faire cliquer sur la zone d'un panel... y a-t-il aussi un problème sur la gestion des événements côté serveur ?
GGtry
|
|
samedi 2 août 2008 à 12:11:41 |
Re : DefaultButton du Panel ne fonctionne pas ?

Nurgle
|
Salut, Une toute petite précision sur la proposition de ggtry dans le cas du onclick="document.getElementById().focus()" : Un ajout d'un onclick javascript doit presque toujours se faire via le code, surtout dans ce cas précis, car le "document.getElementById()" prend en paramètre le ClientID du control, qui n'est pas l'ID côté serveur de ton control, tu dois donc faire un truc du genre : Panel1.Attributes.Add("onclick",String.Format("document.getElementById('{0}').focus()",TextBox1.ClientID)) (Théoriquement ce ClientID peut changer entre deux chargements de la page, vu qu'il dépend de la hiérarchie de controls qui le contient) Sinon pour ton problème en lui-même, je ne vois pas non plus pouquoi tu aurais besoin de faire cliquer dans le "vide" du panel... (je veux dire, en dehors de tes controls) Bonne journée, 
Nurgle (Antoine) - MSP
|
|
samedi 2 août 2008 à 13:01:43 |
Re : DefaultButton du Panel ne fonctionne pas ?

ggtry
|
Bonjour,
Faire l'ajout par le code est en effet plus propre (et évite les avertissements dans Visual Studio). Mais si les controles ont été créés purement en statique, ils conservent côté client le même id. Cela dit, je ne recommande pas de faire comme j'ai dit : c'est juste une possibilité dans ce cas précis. La solution de Nurgle est meilleure dans la mesure où elle est généralement applicable.
GGtry
|
|
samedi 2 août 2008 à 16:29:08 |
Re : DefaultButton du Panel ne fonctionne pas ?

karn2
|
Salut,
déja je vous remercie tous les deux d'avoir pris le temps de me répondre. Je n'aurais pas accès à visual studio avant lundi matin mais je pense que je vais utiliser la solution de Nurgle, après tout ca ressemble à ce que je faisait déja pour afficher une fenetre de confirmation lors du clic sur un bouton. Je trouve tout de même dommage que la propriété defaultbutton ne fonctionne qu'a moitié et que le "focus visuel" soit toujours donné au même bouton... J'ai aussi une autre question, n'y a t'il pas un moyen de désactiver le focus automatique des boutons ? Il me semble par exemple que les linkbutton ne prenne jamais le focus (sauf avec la touche tab). Cela serait finalement le plus simple, je n'aurais qu'a déclenché le bouton voulu en javascript en gérant l'evenement onclick des textboxs et je n'aurais plus à me soucier du focus. En gros je voudrais avoir le même résultat que lorsque je passe le UseSubmitBehavior des boutons à False tout en ayant la possibilité d'afficher un message de confirmation lors du clic sur le bouton.
|
|
samedi 2 août 2008 à 18:09:11 |
Re : DefaultButton du Panel ne fonctionne pas ?

ggtry
|
Mais comment procèdes-tu exactement pour ton message de confirmation ? Je ne comprends pas ce qui t'empêche de mettre UseSubmitBehavior à false et de mettre un message, par exemple une alert javascript. Tu utilises bien l'événement onclientclick du button asp qui permet de lancer une fonction javascript avant l'envoi de la page ?
GGtry
|
|
samedi 2 août 2008 à 18:27:41 |
Re : DefaultButton du Panel ne fonctionne pas ?

karn2
|
Je fais un truc du style : Me.Button.Attributes.Add("onclick", "return confirm('BlaBla?');") mais lorsque le SubmitBehavior est à false le return true du javascript ne déclenche pas le postback de la page (enfin je crois) donc le code de l'évènement clic du bouton n'est pas executé.
|
|
samedi 2 août 2008 à 20:05:56 |
Re : DefaultButton du Panel ne fonctionne pas ?

ggtry
|
Réponse acceptée !
D'accord. En effet, ça pose problème. Une solution qui n'est pas extraordinaire, mais qui fonctionnerait, serait de procéder ainsi, avec le submitbehavior à false. Quand le submitbehavior est à false, l'input créé est de type "button" html avec un onclick dessus qui renvoie à la fonction javascript __doPostBack. L'idéal serait de pouvoir supprimer cette fonction de l'onclick et de la remplacer par une fonction javascript qui appellerait le __doPostBack si le confirm est true :
function test(bou) { if(confirm("continuer ?")) { __doPostBack(bou, '') } }
Le problème est que je n'arrive pas à supprimer le __doPostBack du onclick, mais on peut contourner comme cela (par exemple lors du page load) :
Dim ceci As Button = CType(Page.FindControl("Button1"), Button) Dim ceci2 As Button = CType(Page.FindControl("Button2"), Button) ceci.Attributes.Add("onclick", "test('" & ceci.ClientID & "'); return false;") ceci2.Attributes.Add("onclick", "test('" & ceci2.ClientID & "'); return false;") De la sorte, on ajoute au onclick l'appel à la fonction test() avec l'id du button. Le return false à la suite empêche que le __doPostBack qui va rester dans le onclick ait lieu si le choix lors du confirm est false. Ca marche, mais il y aurait peut-être mieux...
GGtry
|
|
Cette discussion est classée dans : fonctionne, panel, button1, panel1, defaultbutton
Répondre à ce message
Sujets en rapport avec ce message
Request.Form("") ne fonctionne pas [ par jimini ]
J'ai beau essayer de me creuser la tête, mais je ne pavient pas à comprendre.J'ai un formulaire qui la méthode "POST"et je n'arrive pas à récupérer le
EFRANCE fonctionne t'il encore? [ par shaiulud ]
dans le titre
Migrer access 97 vers access 2000 - ca fonctionne plus avec ASP! [ par Popol ]
J'ai converti ma base de données access 97 en access 2000.Dans access pas de problme, me tables, requetes, etats et formulaire - du pareil au même.Par
Serveur SMTP Windows 2000 [ par soldiertt ]
HEllo,Comment fonctionne le serveur SMTP (win 2000 + IIS 5.0).- principe de fonctionnement .- configuration de base pour ke cela fonctionne.Merci
Comment fonctionne MSGRAPH exactement [ par Nabel ]
Bonjour, bonjour,J'aimerais savoir comment fonctionne exactement le composant msgraph.Où se trouve-t-il, ce composant ? Comment l'installer sur le ser
Comment fonctionne movenext ??? urgent svp [ par metos ]
J'aimerais utiliser la fonction movenext pour lire la valeur suivante dans une base de donnée.Après me connecter a la base DB2 j'ai essayé le code su
probleme de concatenation [ par yogipoumpoum ]
bonjours a touspour incrementer une variable dans mon tableau, au lieu de m'ajouter 2 chiffres, il me les concatene :s( panel(j,2) = panel(j,2) + requ
Event Handler en ASP.Net (VB) [ par ByanSpinder ]
Voilà, j'ai un petit problème!J'ai créé un button dynamiquement.Ensuite, je lui ajoute un évènement dynamiquement avec la méthode AddHandler : ce qui
requete sql qui ne fonctionne pas [ par dedelfifine ]
dedelfifinevoici ma requete :SELECT Count( distinct Date) AS CompteDeDateFROM positionnement;et voici le message d'erreur : Erreur de syntaxe(opératio
Passage de Session entre sites [ par Chrigou ]
Bonjour,Comme le passage de Session ne fonctionne pas entre site, j'ai essayé ce truc:Link du Site 1 sur Site 2 avec QueryString=MonNomSur Site 2, lec
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Forum
VB.NETVB.NET par hajourawm
Cliquez pour lire la suite par hajourawm URL REWRITINGURL REWRITING par hudon77
Cliquez pour lire la suite par hudon77
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|