I have a complex UserControl with the main purpose to encapsulate DropDownList with a number of properties for advanced manipulation.
List is being populated on PreRender event depending on properties previously were set:
protected void Page_PreRender(object sender, EventArgs e)
{
sourceClient.SelectCommand = this.Property1 ? "exec a" : "exec b";
}
The most used property is ClientID:
[Category("Settings")]
public int ClientID
{
get
{
return Int32.Parse(DropDownList1.SelectedItem.Value);
}
set
{
DropDownList1.Items.FindByValue(value).Selected = true;
}
}
Getter commonly is being called by ControlPameters in SqlDataSources on pages with this control.
Setter - from markup: <uc:UserControl1 runat="server" ClientID='<%# Bind("ID") %>' />.
So the question is:
Why does setter from Bind is called earlier then PreRender? And DropDownList is empty and item selecting doesn't work! How to workaround this behavior?
Edit1: Ok, not PreRender but Init. But DropDownList1_DataBinding is still being called after property setter!