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