<div class="controls">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<h1>Create a new event
<asp:TextBox ID="EventName_TB" runat="server" CssClass="control-label"></asp:TextBox>
starting on
<asp:TextBox ID="StartDate_TB" runat="server" Style="color: #727272 !important; font-size: 24px; font-weight: 100;" CssClass="span2 input-xlarge datepicker" placeholder="mm/dd/yy"></asp:TextBox>
for
<asp:DropDownList ID="EventDuration_DDL" runat="server" Style="color: #727272 !important; font-size: 24px; font-weight: 100;" CssClass="span1" AutoPostBack="true">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
<asp:ListItem>4</asp:ListItem>
<asp:ListItem>5</asp:ListItem>
<asp:ListItem>6</asp:ListItem>
<asp:ListItem>7</asp:ListItem>
</asp:DropDownList>
days. </h1>
</ContentTemplate>
</asp:UpdatePanel>
</div>
这是我的C#代码
private void EventDuration()
{
Labeldiv.Controls.Clear();
DateTime dt = DateTime.Parse(StartDate_TB.Text);
int Duration = Int32.Parse(EventDuration_DDL.SelectedItem.ToString());
UpdatePanel up = new UpdatePanel();
up.ID = "UpdatePanel8";
up.UpdateMode = UpdatePanelUpdateMode.Conditional;
for (int id = 0; id < Duration; id++)
{
Label NewLabel = new Label();
NewLabel.ID = "Label" + id;
var eventDate = dt.AddDays(id);
NewLabel.Text = eventDate.ToLongDateString();
CheckBox newcheck = new CheckBox();
newcheck.ID = "CheckBox" + id;
newcheck.AutoPostBack = true;
newcheck.CheckedChanged += new EventHandler(newcheck_CheckedChanged);
up.ContentTemplateContainer.Controls.Add(NewLabel);
this.Labeldiv.Controls.Add(NewLabel);
up.ContentTemplateContainer.Controls.Add(newcheck);
this.Labeldiv.Controls.Add(new LiteralControl("<br/>"));
}
this.Labeldiv.Controls.Add(up);
}
实际上它给出了标签&amp;在我动态创建更新面板之前根据我的条件复选框...
它只提供一个标签&amp;一个复选框。这是动态创建更新面板的正确方法吗?
答案 0 :(得分:0)
创建UpdatePanel实例,然后创建“子”控件并将它们添加到UpdatePanel的ContentTemplateContainer属性的Controls集合中。最后将UpdatePanel添加到表单中,您就完成了。你的页面上需要一个。
答案 1 :(得分:0)
可能是您在错误的页面事件中添加控件。 尝试使用Init或PreInit事件。