有没有办法以编程方式将项添加到<ul>元素?</ul>

时间:2010-07-01 14:44:50

标签: asp.net html

我有一个现有<UL>的ASP.NET 2.0应用。我想以编程方式向其添加项目。我已经添加了IDrunat="server"属性。

4 个答案:

答案 0 :(得分:19)

您可以创建新的HtmlGenericControls并将它们添加到UL控件的Controls属性中吗?因此,给定标记如下:

<ul runat="server" id="foo_bar">
    <li>Item</li>
</ul>

你可以这样做(其中itemList是你想要添加为LI的东西的列表):

foreach (var item in itemList)
{
    HtmlGenericControl newLi = new HtmlGenericControl("li");
    newLi.InnerText = item.DisplayText;
    foo_bar.Controls.Add(newLi);
}

如果你要删除一串字符串,即:

string[] itemList = new string[] { "1", "2", "3" };
foreach (string item in itemList)
{
    HtmlGenericControl newLi = new HtmlGenericControl("li");
    newLi.InnerText = item;
    foo_bar.Controls.Add(newLi);
}

您会看到以下结果(使用我的原始标记):

  • 项目
  • 1
  • 2
  • 3

答案 1 :(得分:3)

将项目添加到无序列表的最简单方法是使用转发器控件。

您可以将项目列表绑定到转发器,然后根据需要输出每个列表项。

 <asp:Repeater ID="rpt1" Runat="server">
 <HeaderTemplate>
  <ul>
 </HeaderTemplate>

  <ItemTemplate>
    <li>
      <%# DataBinder.Eval(Container.DataItem, "Item") %>
   </li>
  </ItemTemplate>

  <FooterTemplate>
    </ul>
  </FooterTample>
 </asp:Repeater>

然后在您的C#(或您正在使用的任何服务器端语言)中执行:

DataSet listItems = GetTheListItemsMethod();

rptr1.DataSource = listItems;
rptr1.DataBind();

答案 2 :(得分:0)

还有System.Web.UI.WebControls.BulletedList

您可以绑定到数据源

var bulletedList = new BulletedList();
bulletedList.DataSource = myData;
bulletedList.DataBind();

或将项目分别添加到Items集合

bulletedList.Items.Add( "item1" );
bulletedList.Items.Add( "item2" );

不要忘记将其添加到页面上的内容中,否则您将永远不会看到它

Page.Controls.Add( bulletedList );

答案 3 :(得分:0)

在div标签内定义一个无序列表,并在标签中添加一个id字段和runat = server,这样你就可以从后面的代码中获取控件。

代码示例背后的代码

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Dim y As ArrayList = New ArrayList()
    y.Add("first")
    y.Add("second")
    y.Add("three")

    For Each z As String In y
        Dim x2 As HtmlGenericControl = New HtmlGenericControl("li")
        x2.InnerText = z.ToString
        ted.Controls.Add(x2)
    Next

End Sub