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 :

A quel moment se produit l'assignation des valeurs des propriétés d'un control?


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut A quel moment se produit l'assignation des valeurs des propriétés d'un control?
    Salut,

    J'ai un controle dérivé de liste déroulante.
    J'assigne le nombre d'items par l'intermédiaire d'une propriété.
    Je ne sais pas si je le fais proprement. Voici le code:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Configuration;
    using System.Globalization;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    namespace MonNameSpace
    {
        [DefaultProperty("Text")]
        [ToolboxData("<{0}:ListOfSaturdays runat=server></{0}:ListOfSaturdays>")]
        public class ListOfSaturdays : DropDownList
        {
            public ListOfSaturdays()
            { }
     
            public ListOfSaturdays(int nbWeeks)
            {
                this.nbWeeksForward = nbWeeks;
            }
     
            private int _nbWeeksForward;
     
            public int nbWeeksForward
            {
                get { return _nbWeeksForward; }
                set { _nbWeeksForward = value; }
            }
     
            protected override void OnInit(EventArgs e)
            {
                base.OnInit(e);
                SetSaturdayListDate();
            }
     
            private void SetSaturdayListDate()
            {
                DateTime today = DateTime.Today;
                while (today.DayOfWeek != DayOfWeek.Saturday)
                    today = today.AddDays(1);
     
                this.Items.Add(new ListItem(
                    string.Format(DateTimeFormatInfo.CurrentInfo, today.ToShortDateString()),
                    today.ToString(DateTimeFormatInfo.InvariantInfo.SortableDateTimePattern)));
     
                for (int i = 0; i < nbWeeksForward; i++)
                {
                    today = today.AddDays(7);
                    this.Items.Add(new ListItem(
                        string.Format(DateTimeFormatInfo.CurrentInfo, today.ToShortDateString()),
                        today.ToString(DateTimeFormatInfo.InvariantInfo.SortableDateTimePattern)));
                }
            }
        }
    }
    Il s'agit d'une liste déroulante ne contenant que des samedi. La propriété "nbWeeksForward" conditionne le nombre de samedis de la liste.

    Quand je mets une valeur à l'attribu du controle dans la page ASPX pas de soucis. Cependant, quand je souhaite le faire en code behind, je suis obligé de passer cette valeur à la déclaration, sinon, cela n'a pas d'effet. Je veux dire si le controle est ajouté dans la page ASPX et que je souhaite affecter la valeur en code-behind.

    A quel moment de la génération de la page/du controle dois-je faire cette assignation? Quel est le moment le plus propice?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  2. #2
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    tu as essayé dans le onInit de ta page ?

  3. #3
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Oui. En fait je viens de trouver je crois.

    J'ai accroché la génération de la liste sur le OnPreRender du controle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            protected override void OnPreRender(EventArgs e)
            {
                base.OnPreRender(e);
                SetSaturdayListDate();
            }
    Ca vaut mieux pour éviter d'alourdir la page ASPX.

    Ca marche maintenant quelque soit le moment où j'affecte cette propriété.

    Merki ^^
    "Winter is coming" (ma nouvelle page d'accueil)

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

Discussions similaires

  1. Assigner des valeurs à des float dans une structure
    Par Kai_Leng dans le forum Débuter
    Réponses: 18
    Dernier message: 03/01/2013, 23h12
  2. RAZ des valeurs de propriétes d'un control
    Par amine008 dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 15/08/2011, 13h17
  3. Réponses: 2
    Dernier message: 30/03/2011, 03h07
  4. Réponses: 8
    Dernier message: 29/12/2009, 11h52
  5. Réponses: 5
    Dernier message: 15/06/2007, 11h58

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