如何在无序列表元素中添加表单输入

问题描述:

我正在动态生成一个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事件做些事情。