从codebehind C#Asp.net添加到列表

我在ASPX页面中有一个UL列表:

 

我想从代码隐藏中动态添加列表项,包括每个新列表项的href条目。

怎么样?

您需要将ul标记为服务器端控件,然后将“new item”视为HtmlGenericControl并将其插入控件集合中:

 

    要添加项目,请创建一个新元素并添加它:

     HtmlGenericControl li = new HtmlGenericControl("li"); tabs.Controls.Add(li); HtmlGenericControl anchor = new HtmlGenericControl("a"); anchor.Attributes.Add("href", "page.htm"); anchor.InnerText = "TabX"; li.Controls.Add(anchor); 

    使用asp:bulletedList ,您的列表将更容易。

      tab1 tab2 tab3  

    代码背后:

      ListItem li = new ListItem(); li.Value = "*.html"; //html goes here ie xtab1.html li.Text = "New Text"; //text name goes ie here tab1 blTabs.Items.Add(li); 

    此结果与GenericTypeTea相同,但区别在于HTML在后面的代码中“写入”并注入到页面中。

    在你的标记中:

      

    在你的代码背后:

     List locations // however this initialized StringBuilder sb = new StringBuilder(); sb.Append(""); litMarkup.Text = sb.ToString(); 

    您可以使用asp:Repeater Control创建动态UL

    您可以在.aspx文件中以下列方式使用转发器

       
  • <%# Eval("DisplayText")%>
  • 您可以通过代码将动态数据放在.aspx.cs文件中

     protected void Page_Load(object sender, EventArgs e) { DataTable newsDataTable = new DataTable(); // add some columns to our datatable newsDataTable.Columns.Add("href_li"); newsDataTable.Columns.Add("DisplayText"); for (int i = 1; i <= 5; i++) { DataRow newsDataRow = newsDataTable.NewRow(); newsDataRow["href_li"] = "?sc=item_" + i; newsDataRow["DisplayText"] = "List Item # "+i; newsDataTable.Rows.Add(newsDataRow); } menu_ul_1.DataSource = newsDataTable; menu_ul_1.DataBind(); } 

    结果:您将通过此代码获得以下html

      

    使用父子项嵌套它,使用下面的元素

     Dim newLi = New HtmlGenericControl("li") Dim anchor = New HtmlGenericControl("a") anchor.Attributes.Add("href", itemrow.Item("reg_url").ToString().Trim()) anchor.InnerText = itemrow.Item("conf_name") newLi.Controls.Add(anchor) eventList.Controls.Add(newLi)