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:
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+