如何在无序列表元素中添加表单输入
问题描述:
我正在动态生成一个asp表单,并且我想在列表中添加标签和输入元素。如何在无序列表元素中添加表单输入
例如,我想喜欢的东西来结束:
<ul>
<li><label for="input"/><input id=input"/></li>
</ul>
要做到这一点,我创建了一个Label对象和一个TextBox对象,然后指定标签的AssociatedControlId属性链接这些。但我不能在ListItem中添加任何这些元素,也不能在BulletedList的Controls集合中添加这些元素...
任何想法都会大大降低。
答
System.Web.UI.HtmlControls命名空间有一些有用的控件。
在你的aspx:
<asp:PlaceHolder ID="PlaceHolder1" runat="server" />
在后面的代码:
HtmlGenericControl list = new HtmlGenericControl("ul");
for (int i = 0; i < 10; i++)
{
HtmlGenericControl listItem = new HtmlGenericControl("li");
Label textLabel = new Label();
textLabel.Text = String.Format("Label {0}", i);
listItem.Controls.Add(textLabel);
// etc...
list.Controls.Add(listItem);
}
PlaceHolder1.Controls.Add(list);
就像一个魅力。
答
你可以用Repeater做这样的事情。
<asp:Repeater ID="rpt" runat="server">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<label for='<%# string.Format("ctrl-{0}", Container.ItemIndex) %>'>label for ctrl #<%# Container.ItemIndex %></label>
<input id='<%# string.Format("ctrl-{0}", Container.ItemIndex) %>' type="text" />
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
如果您需要将服务器控件添加到列表中,您需要对Repeater的ItemDataBound事件做些事情。