//Data Base
// HTML ------------------------------------------------------------------
<asp:repeater ID="rptCategories" runat="server" OnItemDataBound="rptCategories_ItemDataBound">
<headertemplate>
<div class="menu"><ul>
</ul></div></headertemplate>
<itemtemplate>
<li>
<a href='#'>< %#Eval("Name") %></a>
<asp:literal ID="ltrlSubMenu" runat="server"></asp:literal>
</li>
</itemtemplate>
<footertemplate>
</footertemplate>
</asp:repeater>
//.CS Page
DataTable allCategories = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadCategories();
}
}
private void LoadCategories()
{
allCategories = GetAllCategories();
rptCategories.DataSource = GetCategories();
rptCategories.DataBind();
}
private void GetCategories()
{
SqlConnection connection = new SqlConnection("Data Source=NITESH;Initial Catalog=TestDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient");
SqlCommand selectCommand = new SqlCommand("SELECT ID,CategoryName FROM Categories WHERE ParentCategoryID=0", connection);
DataTable dt = new DataTable();
try
{
connection.Open();
SqlDataReader reader = selectCommand.ExecuteReader();
if (reader.HasRows)
{
dt.Load(reader);
}
reader.Close();
}
catch (SqlException)
{
throw;
}
finally
{
connection.Close();
}
}
private void GetAllCategories()
{
SqlConnection connection = new SqlConnection("Data Source=NITESH;Initial Catalog=TestDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient");
SqlCommand selectCommand = new SqlCommand("SELECT ID,CategoryName FROM Categories", connection);
DataTable dt = new DataTable();
try
{
connection.Open();
SqlDataReader reader = selectCommand.ExecuteReader();
if (reader.HasRows)
{
dt.Load(reader);
}
reader.Close();
}
catch (SqlException)
{
throw;
}
finally
{
connection.Close();
}
}
protected void Categories_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if (allCategories != null)
{
DataRowView drv = e.Item.DataItem as DataRowView;
string ID = drv["ID"].ToString();
DataRow[] rows = allCategories.Select("ParentCategoryID=" + ID, "Name");
if (rows.Length > 0)
{
StringBuilder sb = new StringBuilder();
sb.Append("<ul>");
foreach (var item in rows)
{
sb.Append("<li><a href='#'>" + item["CategoryName"] + "</a></li>");
}
sb.Append("</ul>");
(e.Item.FindControl("ltrlSubMenu") as Literal).Text = sb.ToString();
}
}
}
}
//CSS --------------------------------------------------------------------------
.menu{
width: 500px;
margin: 0px auto;
font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
font-size: 14px;
}
.menu ul li a:link, div ul li a:visited {
display: block;
background-color: #f1f1f1;color:#000;
text-align: center;
text-decoration: none;
padding: 4px;
border-bottom: 1px solid #fff;
width: 150px;
}
.menu ul li a:hover{
background-color: #ccc;
}
.menu ul li ul li a:link, li ul li a:visited {
display: block;
background-color: #f1f1f1;
color: #000;
text-align: center;
text-decoration: none;
padding: 4px;
border-bottom: 1px solid #fff;
width: 150px;
}
.menu ul li ul li a:hover {
background-color: #ccc;
}
.menu ul {
list-style-type: none;
margin: 0px;
padding: 0px;
}
.menu ul li {
float: left;
margin-left: 5px;
}
.menu ul li ul li {
float: none;
margin-left: 0px;
}
.menu ul li ul {
display: none;
}
.menu li:hover ul{
display: block;
}
// Result
// HTML ------------------------------------------------------------------
<asp:repeater ID="rptCategories" runat="server" OnItemDataBound="rptCategories_ItemDataBound">
<headertemplate>
<div class="menu"><ul>
</ul></div></headertemplate>
<itemtemplate>
<li>
<a href='#'>< %#Eval("Name") %></a>
<asp:literal ID="ltrlSubMenu" runat="server"></asp:literal>
</li>
</itemtemplate>
<footertemplate>
</footertemplate>
</asp:repeater>
//.CS Page
DataTable allCategories = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadCategories();
}
}
private void LoadCategories()
{
allCategories = GetAllCategories();
rptCategories.DataSource = GetCategories();
rptCategories.DataBind();
}
private void GetCategories()
{
SqlConnection connection = new SqlConnection("Data Source=NITESH;Initial Catalog=TestDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient");
SqlCommand selectCommand = new SqlCommand("SELECT ID,CategoryName FROM Categories WHERE ParentCategoryID=0", connection);
DataTable dt = new DataTable();
try
{
connection.Open();
SqlDataReader reader = selectCommand.ExecuteReader();
if (reader.HasRows)
{
dt.Load(reader);
}
reader.Close();
}
catch (SqlException)
{
throw;
}
finally
{
connection.Close();
}
}
private void GetAllCategories()
{
SqlConnection connection = new SqlConnection("Data Source=NITESH;Initial Catalog=TestDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient");
SqlCommand selectCommand = new SqlCommand("SELECT ID,CategoryName FROM Categories", connection);
DataTable dt = new DataTable();
try
{
connection.Open();
SqlDataReader reader = selectCommand.ExecuteReader();
if (reader.HasRows)
{
dt.Load(reader);
}
reader.Close();
}
catch (SqlException)
{
throw;
}
finally
{
connection.Close();
}
}
protected void Categories_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if (allCategories != null)
{
DataRowView drv = e.Item.DataItem as DataRowView;
string ID = drv["ID"].ToString();
DataRow[] rows = allCategories.Select("ParentCategoryID=" + ID, "Name");
if (rows.Length > 0)
{
StringBuilder sb = new StringBuilder();
sb.Append("<ul>");
foreach (var item in rows)
{
sb.Append("<li><a href='#'>" + item["CategoryName"] + "</a></li>");
}
sb.Append("</ul>");
(e.Item.FindControl("ltrlSubMenu") as Literal).Text = sb.ToString();
}
}
}
}
//CSS --------------------------------------------------------------------------
.menu{
width: 500px;
margin: 0px auto;
font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
font-size: 14px;
}
.menu ul li a:link, div ul li a:visited {
display: block;
background-color: #f1f1f1;color:#000;
text-align: center;
text-decoration: none;
padding: 4px;
border-bottom: 1px solid #fff;
width: 150px;
}
.menu ul li a:hover{
background-color: #ccc;
}
.menu ul li ul li a:link, li ul li a:visited {
display: block;
background-color: #f1f1f1;
color: #000;
text-align: center;
text-decoration: none;
padding: 4px;
border-bottom: 1px solid #fff;
width: 150px;
}
.menu ul li ul li a:hover {
background-color: #ccc;
}
.menu ul {
list-style-type: none;
margin: 0px;
padding: 0px;
}
.menu ul li {
float: left;
margin-left: 5px;
}
.menu ul li ul li {
float: none;
margin-left: 0px;
}
.menu ul li ul {
display: none;
}
.menu li:hover ul{
display: block;
}
// Result