我有一个使用ASP.NET 2.0的应用程序,其中包含一个现有的<UL>
。我想通过编程方式向其添加项目。我已经添加了ID
和runat="server"
属性。
<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);
}
你将看到以下结果(使用我的原始标记):
<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();
<ul></ul>
。这是通过执行repeater.DataSource = new List<class>();
实现的。因此,如果list.Count == 0
,则标题/页脚仍会被呈现,而如果repeater.DataSource = null
,则不会呈现。 - Nelson Rothermel还有一个名为System.Web.UI.WebControls.BulletedList的控件
你可以绑定到一个数据源上
var bulletedList = new BulletedList();
bulletedList.DataSource = myData;
bulletedList.DataBind();
或者单独将项目添加到项目集合中
bulletedList.Items.Add( "item1" );
bulletedList.Items.Add( "item2" );
不要忘记将它添加到页面上的某个位置,否则你将永远看不到它。
Page.Controls.Add( bulletedList );
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