Bonjour,
je rencontre un problème avec mon WebUserControl que je n'arrive pas à résoudre et je compte sur vous.
ma page defaut :
Avec le code behind :
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 <asp:DropDownList ID="ddlCountry" runat="server" OnSelectedIndexChanged="ddlCountry_SelectedIndexChanged" AutoPostBack="True"> </asp:DropDownList> <br /><br /> <asp:Repeater ID="rptUCSite" runat="server" Visible="true"> <HeaderTemplate> </HeaderTemplate> <ItemTemplate> <uc1:UCOCS ID="UC1" runat="server" SiteId='<%# DataBinder.Eval(Container.DataItem, "Id")%>' SiteName='<%# DataBinder.Eval(Container.DataItem, "Name")%>' /> </ItemTemplate> <FooterTemplate> </FooterTemplate> </asp:Repeater>
Et mon UC :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 protected void ddlCountry_SelectedIndexChanged(object sender, EventArgs e) { int countryId = Convert.ToInt32(ddlCountry.SelectedValue); List<Site> lSite = SiteBLL.getAllSitesByCountry(countryId ); rptUCSite.DataSource = Site; rptUCSite.DataBind(); } }
Code behind :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Site : <asp:Label ID="lblName" runat="server" Text=""></asp:Label> .................
Rien de très compliqué apparament.
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 public partial class UCSite : System.Web.UI.UserControl { private int _SiteId; public int SiteId { get { return _SiteId; } set { _SiteId = value; } } private string _name; public string SiteName { get { return _name; } set { _name = value; } } protected void Page_Load(object sender, EventArgs e) { //information about theSite lblName.Text = SiteName; ....... }
Mais en fait, on peut remarquer que le 'remplissage' du repeater se fait après un postback.
Du coup le pageLoad de mon UC se fait avant que ces propriétés SiteId/Sitename soient remplies. Donc lblName.Text est toujours null.
je change donc mon pageLoad en Page_unLoad et cette fois les setters sont bien appelés avant et donc lblName.Text a bien la bonne valeur.
Mais comme cette instruction a lieu dans le UnLoad, la valeur n'apparait pas dans la page.
Je ne sais donc plus comment faire pour contourner mon probleme.
J'aimerais éviter d'appeler une nouvelle page une fois mon pays choisis.
Merci de votre aide.
Bizet
Partager