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 :

Evenement double click sur une ligne d'un DataGrid


Sujet :

ASP.NET

  1. #1
    Membre régulier Avatar de imad_eddine
    Inscrit en
    Août 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2006
    Messages : 74
    Points : 76
    Points
    76
    Par défaut Evenement double click sur une ligne d'un DataGrid
    Bonjour,
    Comment faire pour recupérer l'évenement double Click sur un DataGrid et renvoyer la ligne.

    Merci par avance.
    NB j'utilise VS 2003
    -----------------------------
    Ima@d

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    En ASP.NET, Javascript ...

  3. #3
    Membre régulier Avatar de imad_eddine
    Inscrit en
    Août 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2006
    Messages : 74
    Points : 76
    Points
    76
    Par défaut
    Oui, mais comment ?
    -----------------------------
    Ima@d

  4. #4
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    je ne penses pas que tu puisses le faire en Web. (du moins en asp.net , faut voir en javascript)
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 68
    Points : 104
    Points
    104
    Par défaut Utilisation du PostBack
    La technique que je vais décrire ci après est normalement à utiliser dans la cadre du développement de contrôles personnalisés. Ce qui va suivre n'est donc pas très objet et cela me fait un peu mal de l'écrire. C'est un code tout à fait fonctionnel, mais il ne fait pas parti des 'bonnes manières'. Néanmoins, cela vous sortira de la panade.

    Explications

    La communication entre la client (la navigateur) et le serveur (la WebForm), se fait via des appels successifs appelés PostBack. Pour vous en assurer, il vous suffit d'afficher la source d'une page dans votre navigateur pour constater la présence d'une fonction javascript appelée __doPostBack. C'est cette fonction qui est appelée par les déférents évènements cotés clients provoquant le PostBack de la page.

    Les contrôles ASP.NET implémente en natif la gestion de certains évènements clients. Mais la plateforme permet en fait de réagir à n'importe quel évènement et de déclencher un PostBack.

    La démarche est très simple et sachez qu'elle est implémentée en interne par tous les contrôles que vous utilisez. Par exemple, si l'évènement TextChange d'un TextBox fonctionne, c'est que ce contrôle utilise la fonctionnalité décrite ci-après.

    Ce qu'il faut

    1) Il faut être capable d'écrire un petit script client dans l'évènement HTML qui nous intéresse et qui provoquera un PostBack. C'est la méthode GetPostBackEventReference qui nous y aidera. Consultez la documentation Microsoft pour vous faire une idée de la grande variété de possibilités mises à votre disposition par les différentes surcharges de cette méthode.

    2) Il faut aussi être capable, coté serveur, de réagir à ce PostBack. Ce comportement est assuré par l'interface IPostBackEventHandler. Reportez vous à la documentation Microsoft pour plus de renseignements.

    Mise en situation et test

    Pour vous mettre en situation, créez une WebForm, ajoutez un contrôle Image ainsi qu'un contrôle TextBox respectivement nommés MonImage et MonTextBox.

    Ajoutez ensuite le code suivant :

    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
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
     
    publicpartialclass_Default : System.Web.UI.Page , IPostBackEventHandler
    {
    protectedvoid Page_Load(object sender, EventArgs e)
    {
    MonImage.Attributes.Add("ondblclick", ClientScript.GetPostBackEventReference(this, "abcd"));
    }
    publicvoid RaisePostBackEvent(string eventArgument)
    {
    MonTextBox.Text = eventArgument;
    }
    }
    C'est fini, testez, cela doit fonctionner. Le double click sur l'image provoque bel et bien un PostBack. Le traitement coté serveur est bien exécuté.

    Histoire de mieux comprendre, affichez le source de votre page HTML dans Internet Explorer et allez voire ce qui a été placé dans l'attribut ondblclick de la balise HTML de votre image. C'est la méthode GetPostBackEventReference qui a fournit ce code.

    Notez avec intérêt comment l'argument 'abcd' est transmis au travers du PostBack.

    Pour aller plus loin

    Une technologie comme Ajax permet d'implémenter de façon très puissante la communication entre le client et le serveur. Mais, sachez que l'on peut faire des choses très similaires en utilisant ce qui existe en natif dans le Framework. Il est tout a fait possible d'exécuter du code serveur au travers d'un appel XML puis d'adapter l'IHM HTML du client en fonction du résultat retourné.

    Bonne continuation pour ce qui est d'implémenter ce mécanisme sur une DataGrid ou tout autre contrôle.

    NOTE IMPORTANTE : Ce code est un code .NET 2.0. De mémoire, le mécanisme est différente en .NET 1, c'est la méthode Page.GetPostBackEventReference qui est à utiliser (cette méthode est obsolète en 2.0).
    Michaël LEBRETON - Developpeur / Formateur indépendant
    http://www.netkoders.com

  6. #6
    Membre régulier Avatar de imad_eddine
    Inscrit en
    Août 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2006
    Messages : 74
    Points : 76
    Points
    76
    Par défaut
    Merci mlebreton
    -----------------------------
    Ima@d

  7. #7
    Membre régulier

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 68
    Points : 104
    Points
    104
    Par défaut La suite, c'est une autre affaire
    De rien, maintenant, il vous reste à trouver une solution pour attacher un PostBack aux évènements des lignes du DataGrid, ce qui risque d'être moins comique. J'y ai un peu réfléchis et j'ai pensé aux éventuelles solutions suivantes :

    1) En ASP.NET 2.0 nous avons les ControlAdapter qui pourrait permetre ce travail.

    2) La création d'un contrôle personnalisé héritant de DataGrid permetrait la surcharge de la méthode RenderControl qui appelerait RenderControl de la classe de base, puis injecterait les appels PostBack sur les lignes (via peut-être une expression régulière) puis retournerait le code HTML final.

    3) Un script qui serait envoyé sur le client pour attacher un PostBack au évènements de chaque ligne de la table HTML arrivée sur le client.

    A mes yeux la solution n°2 est sans doute la meilleur. Certe cette solution nécessiterait le remplacement des DataGrid par le contrôle personnalisé sur l'ensemble des pages déjà existantes, mais ce travail peut être effectué par les outils de remplacement de VS donc...

    Bon courage.
    Michaël LEBRETON - Developpeur / Formateur indépendant
    http://www.netkoders.com

  8. #8
    Membre régulier Avatar de imad_eddine
    Inscrit en
    Août 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Août 2006
    Messages : 74
    Points : 76
    Points
    76
    Par défaut
    ok ok, merci les amis
    -----------------------------
    Ima@d

Discussions similaires

  1. Double click sur la ligne d'une listbox
    Par lince102 dans le forum Interfaces Graphiques
    Réponses: 13
    Dernier message: 24/01/2008, 14h11
  2. click sur une ligne d'un datagrid
    Par seckinfo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 06/02/2007, 10h42
  3. [VBA-E] Double-Click sur une cellule
    Par boosty dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/04/2006, 15h12
  4. simuler un double click sur une liste dans un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 1
    Dernier message: 01/09/2005, 10h45
  5. Réponses: 13
    Dernier message: 12/07/2005, 10h14

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