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

C# Discussion :

Annuler un évenement "OnItemCommand" sur un DataGrid


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut Annuler un évenement "OnItemCommand" sur un DataGrid
    Bonsoir,

    J'aurais voulu savoir si il était possible dans un DataGrid d'annuler un event.
    J'ai déjà vu la propriété e.Cancel dans certains EventArgs, mais clairement pas sur le DataGrid.

    Pour élargir un peu le champs de vision, j'ai un DataGrid implémentant certaine méthode. Puis dans un second, j'hérite de ce premier DataGrid, et y implémente de nouvelle méthode.

    Cependant, dans le cas d'un ItemCommand, j'aimerai que la commande ne soit faites qu'une fois, hors elle est faite dans la classe fille et dans la classe mère

    Merci d'avance!

  2. #2
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Si jamais une méthode doit être surchargeable par une classe fille, il suffit de la rendre virtuelle dans la classe mère, et la surcharger dans la classe fille.
    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
    class GrilleMere : DataGrid
    {
      protected virtual void TraitementBidule()
      {
       ...
      }
    }
     
    class GrilleFille : GrilleMere
    {
      protected override void TraitementBidule()
      {
       ...
      }
    }

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut
    J'aurais détailler un peu plus mon soucis en fait

    En fait, j'hérite d'une GridView une première fois. j'override la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class EntityDataGrid<T> : DataGrid where T : EntityBase, new()
    {
       protected override void OnEditCommand(DataGridCommandEventArgs e)
       {
            //blabla
       }
    }
    Ensuite j'hérite à nouveau de cette classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class UserDataGrid : EntityDataGrid<User>
    {
        protected override void OnEditCommand(DataGridCommandEventArgs e)
        {
             //blabla
        }
    }
    Et enfin dans mon control ASP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <mmm:UserDataGrid ID="userDt" runat="server"
         OnItemCommand="userDt_OnItemCommand">
    </mmm:UserDataGrid >
     
    //Code behind:
    protected void botTracer_OnItemCommand(object sender, EventArgs e)
    {
        //blabla
    }
    Le soucis c'est que je passe dans le CodeBehind et dans UserDataGrid:: OnEditCommand, ce qui ne m'arrange pas trop :/

    N'y a t-il pas moyen donc, dans le CodeBehind, de faire l'action puis d'annuler l'event pour ne pas passer dans la méthode?

  4. #4
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Donc, en gros, t'as surchargé déjà plusieurs fois OnEditCommand dans tes contrôles hérités, puis en plus tu abonnes une méthode à l'event EditCommand de ton instance.

    Si tu tiens vraiment à ignorer tes surcharges et n'appeler que ta méthode abonnée lorsque la grille de base appelle OnEditCommand, tu peux simplement définir un booléen au niveau de l'une de tes classes héritées, et n'exécuter ton code personnalisé dans les OnEditCommand que si le bool est à true. Ou alors tu crées un event à toi, avec un EventArgs qui contient un Cancel, et tu abonnes ta méthode du code behind à cet event perso.

    J'ai pas idée de la complexité de ton projet, mais ça me semble bien beaucoup, quand même

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut
    Je pense que j'ai voulu trop en faire d'un coup...

    Mais t'as m'a quand même donnée la bonne solution: Créer mon propre event avec les paramètres dont j'ai besoin. J'aurai dû y penser avant

    Merci de ton aide!

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

Discussions similaires

  1. [Quote] DVP quoté sur Bashfr
    Par Skyounet dans le forum La taverne du Club : Humour et divers
    Réponses: 16
    Dernier message: 26/09/2006, 18h52

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