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#][2.0] Gérer un événement de type OnTextChanged dans un UserControl


Sujet :

ASP.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut [C#][2.0] Gérer un événement de type OnTextChanged dans un UserControl
    Bonjour,
    J'ai, dans un écran de saisie, un UserControl qui se comporte comme une TextBox (en plus de gérer les autocomplétions)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <%@ Control Language="c#" 
    Inherits="Sic.Web._UserControls.UCCompletude" 
    CodeFile="UCCompletude.ascx.cs" %>
     
    <script type="text/javascript" src="../@UserControls/completion.js"></script>
     
        <asp:TextBox id="TextBoxSaisieLibelle"  runat="server" />
        <input       id="TextBoxSaisieCode"     runat="server" type="hidden" />
        <input       id="TextBoxListeCodes"     runat="server" type="hidden" />
        <input       id="TextBoxListeLibelles"  runat="server" type="hidden" />
    Dans le code ça donne ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <uc1:UCCompletude ID="TxtCommune" runat="server"  AutoPostBack="true" MaxLength="35" Width="140px" />
    Avant, ce champ était un TextBox, et je gérais l'événement OnTextChanged en appelant une fonction TxtCommune_Changed.

    Ma question: Comment faire pour que ce soit géré dans le UserControl?

    J'ai réussi à "passer" des propriétés de TextBox simples dans le UserControl comme ceci:
    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
    public partial class UCCompletude : System.Web.UI.UserControl
        {
           [....]
     
            // propriété Width
            public Unit Width
            {
                get { return this.TextBoxSaisieLibelle.Width; }
                set { this.TextBoxSaisieLibelle.Width = value; }
            }
     
            // propriété MaxLength
            public int MaxLength
            {
                get { return this.TextBoxSaisieLibelle.MaxLength; }
                set { this.TextBoxSaisieLibelle.MaxLength = value; }
            }
     
            // propriété AutoPostBack
            public bool AutoPostBack
            {
                get { return this.TextBoxSaisieLibelle.AutoPostBack; }
                set { this.TextBoxSaisieLibelle.AutoPostBack = value; }
            }
    }
    Mais je ne sais pas comment faire pour un événement...

    Si vous pouviez éclairer ma faible lanterne, ça serait super !

  2. #2
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    Moi je ferais comme ça (mais je fais ca de tête, j'ai pas VS avec moi) :
    1. Dans ton UserControl, tu consomme l'événement TextChanged de ta TextBox TextBoxSaisieLibelle

    1. Tu créer un evenemenbt TextChanged dans ton UserControl

    1. Dans la méthode associée à l'even,t TextChanged de la textbox TextBoxSaisieLibelle, tu met le code ci-dessous

    1. Puis tu pourras consommer l'event TextChanged de ton UserControl dans ta page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public event EventArgs TextChanged;
    ...
    protected void TextBoxSaisieLibelle_onTextChanged(object sender, EventArgs e)
    {
       if (TextChanged != null)
          TextChanged(sender, e);
    }
    PS : je rappel que je fais de tête, y'a peut-être des erreurs, met je crois que l'idée principale est là.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta réopnse! En effet avec ça je vais toucher au but!

    Mais le problème, c'est que je comprend pas trop ce que tu entends pas "consommer" l'événement... Je fais ça où?

    Et sinon, le ontextchanged je ne veux l'utiliser que dans une page précise alors que j'utilise le usercontrol à d'autres endroits... ça sera possible?

    En fait je comprend l'idée, mais je vois pas comment le mécanisme global fonctionne. Si tu pouvais me dire où mettre quoi, ça m'aiderait encore plus! Désolé si je t'embete, mais je patauge encore un peu

    Pour info:
    UserControl:
    forme: UCCompletude.ascx
    fond: UCCompletude.ascx.cs

    Ma page (gestion des intervenants)
    forme: Intervenant.aspx
    fond: Intervenant.aspx.cs

  4. #4
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    "consommer" un événement veut dire s'y abonner, l'utiliser quoi.
    Tu peux très bien justement avoit l'evemenr TextChanged de ton userControl sur certaines pages et pas sur d'autres, il te suffit de "consommer" (t'abonner) à l'événement quand tu en as besoin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UCCompletude.TextChanged += .....
    (en code-behind)
    ou en déclaratif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <uc1:UCCompletude ID="TxtCommune" runat="server"  AutoPostBack="true" MaxLength="35" Width="140px" TextChanged="....." />

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/04/2014, 01h43
  2. [Observateur] Gérer plusieurs événements/ plusieurs types d'observateurs
    Par nanou2002 dans le forum Design Patterns
    Réponses: 1
    Dernier message: 27/10/2009, 10h50
  3. [XSLT] gérer un évènement sur un choix dans un combo XSL
    Par KRis dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/01/2009, 16h36
  4. Réponses: 1
    Dernier message: 07/07/2008, 13h56
  5. Réponses: 26
    Dernier message: 30/07/2007, 12h09

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