我正在構建一個組合服務器控件,該控件當前只有一個TextBox和一個DropDownList。這是在其所有的胎兒榮耀代碼:複合控件中的DropDownList在回發中丟失選定的值
public Address : CompositeControl
{
private string[] _states = new string[]
{
string.Empty, "ACT", "NSW", "VIC", "QLD", "SA", "WA", "NT", "TAS"
};
private TextBox _street;
private DropDownList _state;
public string Street
{
get { return _street.Text; }
set { _street.Text = value; }
}
public string State
{
get { return _state.Text; }
set { _state.Text = value; }
}
public Address() : base()
{
EnsureChildControls();
}
protected override void CreateChildControls()
{
_street = new TextBox();
_state = new DropDownList();
_state.Items.AddRange(
Array.ConvertAll<string, ListItem>(_states, ListItem.FromString));
Controls.Add(_street);
Controls.Add(_state);
}
}
控制似乎是在回傳正常工作,也就是直到聲明值設置,如:
<squee:Address runat="server" ID="a" Street="123 Fake St" State="VIC" />
在此之後,文本框繼續以正確工作,但_state成員不拾取發佈的後值,而是堅持聲明的值。我已經檢查了Request對象中的原始發佈值,並且列表的UniqueID的新值在那裏,但_state不會提取它。
我很確定這將會是明顯的,但我只是在這裏旋轉我的輪子。
它爲我工作。 – 2010-02-23 05:43:23