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 :

Bouton et CommandArgument


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut Bouton et CommandArgument
    Bonjour à tous,

    Je suis un peu curieux, j'aimerais bien savoir où est conserver le commandargument d'un bouton entre l'envoit de la page au browser et le retour au postback ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:imagebutton id="imgbtMonBouton" runat="server" commandargument="BONJOUR" />
    Est-il conserver dans le Viewstate ? Je ne pense pas, entk j'ai chercher avec un Viewstate decoder et je n'ai rien trouvé.

    Pourrait-il être dans le ControlState ? Cela me surprendrait aussi puisque je l'aurais vu dans le ViewState lors du décodage...

    Enfin, si quelqu'un à la réponse ça sera sympa.

    Bonne journée

  2. #2
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Le CommandArgument d'un contrôle est stocké côté serveur. Ensuite, il est communiqué entre une page et le serveur via les champs Request.Forms["__EVENTTARGET"] (quel contrôle ?) et Request.Forms["__EVENTARGUMENT"] (quelle commande ?) lors d'une action.

    En espérant t'avoir aidé.

  3. #3
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut
    Bonjour Nicolas,

    Il est stocké où côté serveur ?

    Lorsque je regarde le input html généré par un bouton Button, je ne vois aucun endroit où est indiqué l'argument en question (attributs html, onclick, etc...). Il doit sûrement être envoyé d'une certainne façon, lors de l'appel de __doPostback peut-être ? Mais encore là, il n'y a pas de "onclick="__doPostBack(...)".

    Je trouve cela bizarre qu'il soit stocké côté serveur, puisque parfois on spécifie le CommandArgument par binding ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commandargument='<%# Eval("codeUnique") %>'
    Lors d'un postback, le binding n'est pas réalisé une seconde fois et pourtant dans l'événement RowCommand de la grille, le bouton (sender) contient bien l'argument.


    En fait, voilà où je veux en venir avec cette question. J'aimerais savoir s'il est possible de créer une nouvelle ligne DOM createElement (TR, TD.../TD /TR) dans une grille mais côté client. Cette ligne existerait déjà dans la base de données et les information serait récupéré via un PageMethode, une fois l'information récupéré, je créé la ou les lignes côté client par JavaScript.

    Je ne dois pas recharger la grille en entier. lorsque je récupère ces nouvelle lignes.

    Donc, dans ces nouvelles lignes, il y aurait aussi les boutons de commandes (btSupprimer, btEditer, etc...) et lorsque l'utilisateur cliquerait par exemple sur btSupprimer, alors l'événement RowCommand serait déclanché côté serveur et j'obtiendrait l'argument ici. Ce qui m'embête aussi c'est les IDs, comme le NamingContainer du GridView nomme les contrôle en se servant du RowIndex, alors il se peut que j'aie à récupérer des enregistrement qui sont entre deux lignes déjà présentes. Donc, j'aurais voulu que le NamingContainer nomme les sous-controles avec leur code unique de base de données à la place. Ex :

    Au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    myGridView_ctl01_btSupprimer
    myGridView_ctl02_btSupprimer
    myGridView_ctl03_btSupprimer
    On aurait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    myGridView_ctl1158_btSupprimer
    myGridView_ctl1348_btSupprimer
    myGridView_ctl2351_btSupprimer
    J'essais seulement de comprendre comment recréer le mécanisme.

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void CommandBtn_Click(Object sender, CommandEventArgs e) 
    {
       // e.CommandArgument
    }

  5. #5
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void CommandBtn_Click(Object sender, CommandEventArgs e) 
    {
       // e.CommandArgument
    }
    Merci, mais là n'est pas ma question. Je sais comment récupérer le CommandArgument d'un bouton

    Ce que j'aimerais savoir c'est comment le mécanisme fonctionne entre Client/Server.

    On spécifie le CommandArgument côté server (disons par binding) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commandargument='<%# Eval("codeUnique") %>'
    Ensuite le code s'en vas côté client et plus rien n'existe côté serveur puisque la page est unloadée.

    Dès que le client fait un postback, ça retourne côté serveur, et boom, la dans l'événement click on a de nouveau le CommandArgument que l'on avait spécifié.

    Donc, où a-t-il récupéré ? Du ViewState, ControlSate, envoyé à l'aide de la commande __doPostBack ???

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Ca te va pas la réponse de Nicolas?
    Request.Forms["__EVENTARGUMENT"]

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/11/2007, 16h48
  2. Pop-up d'une dialog box a partir d'un bouton
    Par bobbyjack dans le forum MFC
    Réponses: 21
    Dernier message: 13/09/2005, 15h32
  3. Réponses: 2
    Dernier message: 31/08/2002, 14h00
  4. Bmp pour boutons
    Par Fizgig dans le forum Outils
    Réponses: 5
    Dernier message: 22/08/2002, 10h56
  5. Afficher/Masquer un bouton comme IE 6
    Par benj63 dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/07/2002, 13h12

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