使用.NET填充html列表控件

8 .net html c# vb.net

我有一个如下定义的列表:

<ul id="myList" class='myClass'>
    <li class="myItemClass">Item 1</li>
    <li class="myItemClass">Item 2</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

使用.NET如何动态地向列表中添加项?我还需要在每个新项目上指定类名

bal*_*dre 15

你甚至可以使用那个HTML,添加runat ="server"你就能把它当作一个HTMLControl来对待它是什么控件,我经常用div做

<ul id="myList" runat="server" class="myClass">
    <li class="myItemClass">Item 1</li>
    <li class="myItemClass">Item 2</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

然后你得到HTMLControl并玩它

HtmlGenericControl li;

for (int x = 3; x <= 10; x++)
{
    li = new HtmlGenericControl("li");
    li.Attributes.Add("class", "myItemClass");
    li.InnerText = "Item " + x;

    myList.Controls.Add(li);
}
Run Code Online (Sandbox Code Playgroud)

你会最终得到:

    <ul id="myList" runat="server" class="myClass">
        <li class="myItemClass">Item 1</li>
        <li class="myItemClass">Item 2</li>
        <li class="myItemClass">Item 3</li>
        <li class="myItemClass">Item 4</li>
        <li class="myItemClass">Item 5</li>
        <li class="myItemClass">Item 6</li>
        <li class="myItemClass">Item 7</li>
        <li class="myItemClass">Item 8</li>
        <li class="myItemClass">Item 9</li>
        <li class="myItemClass">Item 10</li>            
    </ul>
Run Code Online (Sandbox Code Playgroud)

当然,您可以使用有序或无人看法列表,它们也位于ASP.NET Web控件下面.

<asp:BulletedList runat="server" ...
Run Code Online (Sandbox Code Playgroud)


Dav*_*enn 5

您可以使用asp:BulletedList之类的

<asp:BulletedList ID="MyList1" CssClass="MyClass" runat="server">
  <asp:ListItem Text="Item1" class="MyClass" />
</asp:BulletedList>
Run Code Online (Sandbox Code Playgroud)

添加添加代码,例如

ListItem item = new ListItem("Item2");
item.Attributes.Add("class", "MyClass");
MyList1.Items.Add(item);
Run Code Online (Sandbox Code Playgroud)

或者,如果由于某些特定原因需要使用ul标记,则可以向其中添加runat =“ server”。例如

<ul id="MyList2" class="MyClass" runat="server">
  <li class="MyClass">Item1</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

用像这样的代码

HtmlGenericControl li = new HtmlGenericControl("li");
li.Attributes.Add("class", "MyClass");
li.InnerText = "Item2";
MyList2.Controls.Add(li);
Run Code Online (Sandbox Code Playgroud)


Bin*_*ony 2

解决这个问题最简单的方法是使用 asp 转发器控件

<ul id="myList" class='myClass'>
<asp:Repeater ID="repeaterMyList" Runat="server">
<ItemTemplate>
  <li class="myItemClass">
   <%# Eval("Item") %>
  </li>
</ItemTemplate>
</asp:Repeater>
</ul>
Run Code Online (Sandbox Code Playgroud)

[编辑] - 请记住在repeaterMyList上设置数据源并在代码隐藏中的repeater控件上调用databind。

repeaterMyList.DataSource = someDataTable;
repeaterMyList.DataBind();
Run Code Online (Sandbox Code Playgroud)