У меня есть комплекс UserControl
с основной целью инкапсулировать DropDownList
с рядом свойств для расширенных манипуляций.Выбор предмета в инкапсулированном DropDownList на DataBind
Список заселяется на 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
пуст и выбор предметов не работает! Как обойти это поведение?
Редактировать 1: Хорошо, а не PreRender
, но Init
. Но DropDownList1_DataBinding все еще вызывается после настройки свойств!
@womp: Привет, спасибо за советы! Я переписал свой код, так что теперь у меня есть обработчик событий Page_DataBinding, но он сначала называется Page_DataBinding после него setterter и после него DropDownList1_DataBinding, где он заносится из источника данных. Как связать данные с выпадающим списком перед установщиком? – abatishchev