我有一個下拉列表,裏面有一些選擇。基於用戶選擇,我需要創建一些動態控件並將它們呈現在窗體上。根據靜態控件的選定值創建動態控件
我的理解是,需要在OnInit或CreateChildControls中創建動態控件,以便這些動態控件的ViewState可以由運行時正確恢復。
問題是,我無法獲取OnInit或CreateChildControls中的下拉列表的SelectedValue,因爲尚未恢復ViewState的下拉列表。
有什麼辦法來獲得當前的選擇,這樣我可以創建基於當前用戶選擇的動態控制,並將它們添加頁面正確
編輯: 的標記如下所示:
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="ddl" runat="server" AutoPostBack="true" AppendDataBoundItems="true">
<asp:ListItem Text="(Select Color)" Value="" />
<asp:ListItem Text="Red" Value="Red" />
<asp:ListItem Text="Green" Value="Green" />
<asp:ListItem Text="Blue" Value="Blue" />
</asp:DropDownList>
<asp:PlaceHolder ID="plHolder" runat="server" />
</div>
</form>
這裏是後面的代碼:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void CreateChildControls()
{
base.CreateChildControls();
TextBox tb = new TextBox();
if (ddl.Text != "")
{
tb.Text = ddl.Text;
if (Session["id"] != null)
{
string id = Session["id"].ToString();
tb.ID = id;
}
else
{
Session["id"] = tb.ID = Guid.NewGuid().ToString().Replace("-", "");
}
plHolder.Controls.Add(tb);
}
}
}
在線 「tb.Text = ddl.Text;」我希望得到當前的選擇,並基於該設置動態控制的文本屬性的值。但是目前的選擇尚未在OnInit中設置。
你需要發佈一些代碼來檢查問題出在哪裏,根據你的說法,它似乎沒問題。 – 2009-10-21 06:00:25
我已經添加了一些代碼來捕捉我想要做的事情的本質 – 2009-10-21 06:09:28