我有一個複雜的UserControl
,主要目的是封裝DropDownList
與一些屬性進行高級操作。在DataBind上的封裝DropDownList中選擇項目
列表被填充上PreRender
事件取決於先前已設置的屬性:
protected void Page_PreRender(object sender, EventArgs e)
{
sourceClient.SelectCommand = this.Property1 ? "exec a" : "exec b";
}
最常用的屬性是客戶端ID:
[Category("Settings")]
public int ClientID
{
get
{
return Int32.Parse(DropDownList1.SelectedItem.Value);
}
set
{
DropDownList1.Items.FindByValue(value).Selected = true;
}
}
吸氣劑通常被在SqlDataSources
呼籲通過ControlPameters
上頁與此控制。
二傳手 - 從標記:<uc:UserControl1 runat="server" ClientID='<%# Bind("ID") %>' />
。
所以,問題是:
爲什麼從Bind
二傳手早叫然後PreRender
?而且DropDownList
是空的,並且項目選擇不起作用!如何解決此問題?
編輯1:好吧,不是PreRender
而是Init
。但DropDownList1_DataBinding仍然在屬性設置器之後被調用!
@womp:嗨,謝謝你的提示!我重寫了我的代碼,所以現在我有了Page_DataBinding事件處理程序,但仍然首先在它的屬性設置器之後調用Page_DataBinding,並且在它之後從它的數據源填充它的DropDownList1_DataBinding。如何在setter之前將數據綁定到下拉列表中? – abatishchev 2010-02-15 01:55:44