Bonjour,

je rencontre un problème avec mon WebUserControl que je n'arrive pas à résoudre et je compte sur vous.

ma page defaut :

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>
Avec le code behind :
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();            
        }
    }
Et mon UC :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Site :
<asp:Label ID="lblName" runat="server" Text=""></asp:Label>
.................
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
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;
            .......
    }
Rien de très compliqué apparament.

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