Repeater de WUC + Postback
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:
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:
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:
1 2 3 4
|
Site :
<asp:Label ID="lblName" runat="server" Text=""></asp:Label>
................. |
Code behind :
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
|
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