我有一个复杂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;
}
}
ControlPametersGetter 通常在SqlDataSources具有此控件的页面上被调用。
二传手 - 来自标记:<uc:UserControl1 runat="server" ClientID='<%# Bind("ID") %>' />.
所以问题是:
为什么 setter fromBind被更早地调用PreRender呢?并且DropDownList是空的并且项目选择不起作用!如何解决此行为?
Edit1:好的,不是PreRender但是Init。但是 DropDownList1_DataBinding 在属性设置器之后仍然被调用!