У меня есть комплекс UserControl
с основной целью инкапсулировать DropDownList
с рядом свойств для расширенной манипуляции.
Список заполняется по событию PreRender
в зависимости от того, какие свойства были ранее установлены:
protected void Page_PreRender(object sender, EventArgs e)
{
sourceClient.SelectCommand = this.Property1 ? "exec a" : "exec b";
}
Наиболее используемым свойством является ClientID:
[Category("Settings")]
public int ClientID
{
get
{
return Int32.Parse(DropDownList1.SelectedItem.Value);
}
set
{
DropDownList1.Items.FindByValue(value).Selected = true;
}
}
Getter обычно вызывается ControlPameters
в SqlDataSources
на страницах с этим элементом управления.
Сеттер - из разметки: <uc:UserControl1 runat="server" ClientID='<%# Bind("ID") %>' />
.
Итак, вопрос:
Почему сеттер из Bind
вызывается раньше, чем PreRender
? И DropDownList
пусто и выбор элемента не работает! Как обойти это поведение?
Edit1: Хорошо, не PreRender
, а Init
. Но DropDownList1_DataBinding по-прежнему вызывается после установки свойства!