IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#] Utiliser plusieurs formulaires serveur


Sujet :

ASP.NET

  1. #1
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 337
    Points : 130 282
    Points
    130 282
    Billets dans le blog
    1
    Par défaut [C#] Utiliser plusieurs formulaires serveur
    Bonjour, je m'adresse encore à vous

    Bon voilà je dois convertir en ASP.NET une page ASP qui contenait 3 formulaires à la suite.
    Intérêt de la chose :
    On peut ne modifier qu'un seul des 3 formulaires
    Si je remplis une ligne de saisie et que j'enfonce Entrée, il valide bien le bon bouton associé au formulaire.

    Bon alors j'aurais espéré pouvoir faire 3 formulaires serveurs sur la même page, au moins pour que le bouton sélectionné par défaut quand je suis sur une ligne de saisie soit le bouton associé à ce pseudo-formulaire. Vu qu'il ne veut pas ce méchant j'aimerais savoir si quelqu'un connaît une solution pour présélectionner un bouton quand on clique sur un TextBox ou s'il faut que j'intercepte, pour chaque TextBox, en Javascript, l'enfoncement de la touche Entrée ?

    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  2. #2
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    J'avais vu ça dans un thread mais impossible de te dire ou c'est juste un truc que j'ai sélectionné pour la faq asp.net en préparation


    Voici une foction qui vous permettra de mettre le focus sur un Webcontrol qui se trouve dans la page :
    Public Function setFocus(ByVal champs As System.Web.UI.WebControls.WebControl) Dim s As String s = "<script language= ""javascript"">" + "document.getElementById('" + champs.ID + "').focus()</script>" page.RegisterStartupScript("focus", s) End Function
    je pense que ça devrait pouvoir t'aider

  3. #3
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 337
    Points : 130 282
    Points
    130 282
    Billets dans le blog
    1
    Par défaut
    Merci pour ta réponse, neo.51, mais ta solution malheureusement ne correspond pas à ce que je veux obtenir. Ta fonction permet de positionner le focus. Je cherchais, moi, à avoir plusieurs boutons d'actions et que, en fonction de la position du focus (sur tel ou tel CheckBox), lorsque j'enfonce Entrée, il appelle bien le bon OnClick du bouton associé (ce qui était automatique quand on avait plusieurs formulaires).

    Début du mode système D...
    J'ai repris une de tes astuces, celle à utiliser lorsque le bouton Entrée ne fonctionne pas, en lui faisant prendre un paramètre pour que TouchReturn contienne le bouton à activer. Le problème c'est que là, la touche Entrée fonctionnait déjà avant. Donc quand j'enfonce Entrée, le bon OnClick est appelé... puis ensuite le OnClick du 1er bouton se voit appelé ! 2 submits pour le prix d'un

    Mais j'ai rajouté un système D au système D

    Avec un bouton fictif invisible en début de fiche comme ça c'est lui qui est validé au 2ème coup et donc je n'ai plus qu'une seule validation

    Résumé de l'astuce anomalyenne :

    D'abord une fonction trap qui prend un paramètre : le numéro du bouton à valider.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script>
    function trap(bouton)
    {
       if((event.which && event.which == 13)||(event.keyCode && event.keyCode == 13))
       {
          document.Formulaire.ToucheReturn.value = bouton;
          document.Formulaire.submit();
       }
    }
    </script>
    Les deux contrôles en début de fiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input id="ToucheReturn" type="hidden" Value="0" Runat="server">
    <asp:button id="BoutonFictif" Runat="server" Width="0" />
    Pour chaque TextBox, ajouter la propriété onkeypress="trap(numéro_du_bouton_à_valider)", par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:textbox onkeypress="trap(1)" id="Adresse1" Runat="server" />
    Dans le code-behind:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    private void ToucheReturn_ServerChange(object sender, System.EventArgs e)
    {
    		ToucheReturn.Value = "0";
    }
     
    private void Page_Load(object sender, System.EventArgs e)
    {
    	if (IsPostBack)
    		{
    			switch (Int32.Parse(ToucheReturn.Value))
    			{
    				case 1:
    					EnregistrerCoordonnées_Click(this, e);
    					break;
     
    				case 2:
    					EnregistrerEMail_Click(this, e);
    					break;
     
    				case 3:
    					EnregistrerMDP_Click(this, e);
    					break;
    			}
     
    			return;
    		}
     
    		/* reste du Page_Load */
    }
    Le seul gros inconvénient de cette astuce est qu'elle ne fonctionne que sous IE... Sous Mozilla, la touche Entrée ne fonctionne pas et il apparaît un petit bouton carré en haut à gauche, ASP.NET ayant viré l'attribut "Width=" correspondant. Je vais travailler à l'amélioration de cette solution afin que cela soit applicable sur tous les navigateurs.
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Astuce pour gérer la touche "enter" dans les formu
    Ajouter aux champs du formulaire l'événement onKeyPress

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <asp:TextBox id="tboxPassword" runat="server"  TextMode="Password" onKeyPress="Javascript:onEnterSubmit();"></asp:TextBox>
    Puis dans le codebehind ajouter les 2 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    //Génère la fonction javascript gérant le bouton "entrée"
    string fonctionJavascript = 
    "<script language=\"Javascript\">
    function onEnterSubmit() 
    {
    if (event.keyCode == 13)
    { 
    document.forms[0]." + btnValiderIdentification.ClientID + ".focus();
     }
     }
    </script>";	
     
    //Ecrit la fonction dans la page
    Response.Write(fonctionJavascript);
    Où btnValiderIdentification est le bouton qui valide normalement le formulaire.

    [Balise [code] rajoutée par Abelman]
    [Pensez-y vous-même à l'avenir. Merci. ]

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Personnellement, je conseillerais fortement de tout bêtement ne pas utiliser de formulaire serveur. Tu n'as plus droit aux contrôles HTML (pas une grosse perte), tu dois t'occuper toi-même de récupérer les données envoyées dans le formulaire (une ligne de code par champ pour la version simple, pas méchant) et tu peux avoir besoin de programmer toi-même une partie de comportement ke .NET prenait en charge, mais rien de bien abominable.

    Et échange d'un peu plus de code, tu peux mettre autant de formulaires ke tu veux, gérés correctement par n'importe kel navigateur sans avoir à coller des bidouilles en Javascript dans tous les champs (je suis le seul à trouver les solutions de ce genre un peu lourdingues pour le peu k'on a à gagner en utilisant un formulaire serveur ?), et tu es totalement libre pour définir l'affichage de ta page, sans être limité par les kelkes attributs gérés par les contrôles serveur.

    Si vraiment t'as un besoin absolu de ces fichus contrôles serveur, y a pas le choix, faut se fader de la bidouille Javascripteske. Mais creuse un peu l'option de t'en passer pour voir. T'as pas grand chose à perdre, et bcp (bcp) à gagner. Le principal intérêt de .NET après tout, c'est le framework. Le modèle WebForms, c'est une facilité ki n'est pas forcément adaptée à toutes les utilisations, et c'est loin d'être la seule façon de faire. Heureusement d'ailleurs, parce ke perso, les embrouilles liées à ce modèle et le code ke ça produit, ça me fait hurler...
    Be wary of strong drink.
    It can make you shoot at tax collectors, and miss.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/02/2008, 22h58
  2. Formulaire utilisant plusieurs tables
    Par Yoshi592 dans le forum IHM
    Réponses: 4
    Dernier message: 05/07/2007, 15h24
  3. [ Utilisation de variable sur plusieurs formulaires ]
    Par Arkoze dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/05/2007, 13h26
  4. Réponses: 21
    Dernier message: 29/11/2006, 22h51
  5. Comment utiliser la meme table pour plusieurs formulaires
    Par pacodelareunion dans le forum Access
    Réponses: 5
    Dernier message: 26/10/2005, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo