2008-11-03 64 views
0

我正在動態生成一個asp表單,並且我想在列表中添加標籤輸入元素。如何在無序列表元素中添加表單輸入

例如,我想喜歡的東西來結束:

<ul> 
<li><label for="input"/><input id=input"/></li> 
</ul> 

要做到這一點,我創建了一個Label對象和一個TextBox對象,然後指定標籤的AssociatedControlId屬性鏈接這些。但我不能在ListItem中添加任何這些元素,也不能在BulletedList的Controls集合中添加這些元素...

任何想法都會大大降低。

回答

4

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); 

就像一個魅力。

0

你可以用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事件做些事情。