Add to List from codebehind C# Asp.net Add to List from codebehind C# Asp.net asp.net asp.net

Add to List from codebehind C# Asp.net


You need to mark your ul as a server side control, then treat the 'new item' as a HtmlGenericControl and insert it into the control collection:

<ul runat="server" id="tabs"> 

To add the item, create a new element and add it:

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


Use asp:bulletedList and your list will be much easier.

<asp:BulletedList id="blTabs"   BulletStyle="Disc"  DisplayMode="LinkButton"   runat="server">    <asp:ListItem Value="ztab1.htm">tab1</asp:ListItem>    <asp:ListItem Value="ztab2.htm">tab2</asp:ListItem>    <asp:ListItem Value="ztab3.htm">tab3</asp:ListItem></asp:BulletedList>

Code Behind:

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


This result is the same as GenericTypeTea's, but the difference is the HTML is 'written' in the code behind and injected into the page.

In your markup:

<asp:Literal id="litMarkup" runat="server" />

In your code behind:

List<string> locations  // however this initialized StringBuilder sb = new StringBuilder();sb.Append("<ul id=\"tabs\">");for (int i = 0; i < locations.Count; i++){   sb.Append("<li id=\"tab" + i.ToString() + "\"><a href=\"" + locations[i] + "\">Tab " + i.ToString() + "</a></li>");}sb.Append("</ul>");litMarkup.Text = sb.ToString();