我對用戶控件相當陌生。到目前爲止,我發現它們對於處理大量重複的用戶輸入字段非常有用。但是,我在控件中預填充下拉列表時遇到問題。我一個DDL添加到我的ascx頁面,然後我綁定的DDL和揭露它:在usercontrol的下拉列表中設置選定的索引
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<Travel_CarSize> tc = Travel_CarSizes.GetCarSizes();
ddlCarSize.DataSource = tc;
ddlCarSize.DataTextField = "CarSize";
ddlCarSize.DataValueField = "CarSizeID";
ddlCarSize.DataBind();
}
}
public string CarSize
{
get { return ddlCarSize.SelectedValue.ToString(); }
set { ddlCarSize.SelectedIndex = ddlCarSize.Items.IndexOf(ddlCarSize.Items.FindByValue(value)); }
}
然而,當我編程嘗試設置選擇在控制我總是最後設置它,然後結合它的DDL。在我的aspx.cs文件I設置:
CarControl1.CarSize = "3";
該計劃的目的是顯示一個空的用戶控件(與數據綁定DDL)和一個gridview。用戶選擇一個GridView條目,並且該用戶控件獲取數據。因此,ddl從一開始就受到約束,然後發生導致「預選」ddl的事件。
當這並沒有給我我找的結果我把一個斷點放在if(!IsPostBack),ddlCarSize.DataBind();和集合{}。我運行該程序,它綁定我的ddl,並在gridview中做出選擇。當我點擊select時,我發現它碰到了usercontrol中的if(!IsPostBack),並且說:「哦,這是回傳,不要進入if。」那麼它會擊中set {},但ddl現在是空的。然後它再次擊中if(!IsPostBack),並由於某種原因現在說它不是回發並重新綁定ddl。
我認爲這是一個很常見的問題,但我還沒有找到解決方案。任何幫助將不勝感激。
獵人,你是我的新個人英雄。這是一個簡單的解決方案,它從來沒有跨過我的腦海。謝謝。 – Jeremy 2010-11-11 15:45:08
很高興我能幫忙! – hunter 2010-11-11 16:14:08