2010-11-30 6 views
0

J'ai créé un contrôle utilisateur avec une propriété personnalisée dans asp.net comme suit. Dans la page aspx qui utilise ce contrôle utilisateur, j'ai quelque chose comme ce qui suit. Le contrôle utilisateur est dans un EditItemTemplate de la FormViewliaison de contrôle d'utilisateur asp.net

<uc1:MyControl ID="c1" runat="server" CountryCode='<%# this.DropDownCountry.SelectedValue %>' Value1='<%# Bind("Value1Col") %>' /> 

Je suis en train d'utiliser la CountryCode dans la méthode Page_Load du contrôle de l'utilisateur, mais la valeur n'a pas été peuplée.

Ma question est à quelle étape du cycle de vie du contrôle la valeur bornée est-elle remplie? J'ai essayé d'assigner la valeur directement comme suit et il obtient sa valeur à la méthode Page_Load.

<uc1:MyControl ID="c1" runat="server" CountryCode="CA" Value1='<%# Bind("Value1Col") %>' /> 

grâce,

le UC1: MyControl a la propriété suivante:

[Browsable(true)] 
[Bindable(true, BindingDirection.TwoWay)] 
[DefaultValue(0)] 
[PersistenceMode(PersistenceMode.Attribute)] 
public string CountryCode 
{ 
    get { return _countryCode; } 
    set { _countryCode = value; } 
} 

Répondre

0

Puisque vous utilisez la syntaxe de liaison de données que vous devez appeler DataBind méthode sur votre contrôle - vous pouvez ajoutez ceci à la méthode Page_Load de la page aspx comme ceci:

protected void Page_Load(object sender, EventArgs e) 
{ 
    c1.DataBind(); 
} 
+0

merci, j'aurais dû faire la question plus claire. Le contrôle utilisateur est en fait dans un EditItemTemplate de FormView. Vous ne savez pas comment je peux DataBind the usercontrol dans code-behind quand il est à l'intérieur du modèle item sur l'événement de liaison de données de FormView? – Eatdoku

+0

Là où j'ai une question, c'est à quel stade du cycle de vie d'usercontrol je peux utiliser la valeur bornée en toute sécurité et la changer pour que la liaison bidirectionnelle fonctionne correctement. – Eatdoku