我有一个下拉列表,里面有一些选择。基于用户选择,我需要创建一些动态控件并将它们呈现在窗体上。根据静态控件的选定值创建动态控件
我的理解是,需要在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