IF OBJECT_ID (N'dbo.MenuMain', N'U') IS NOT NULL
 DROP TABLE dbo.MenuMain;
GO
CREATE TABLE dbo.MenuMain(ID INT, [Name] VARCHAR(50),[Link] VARCHAR(50), [Title] VARCHAR(50), ParentID INT, [Order] INT)
INSERT INTO dbo.MenuMain
SELECT 1, 'CSS Drop Down Menus', NULL, NULL, 0, 1 UNION ALL
SELECT 2, 'Vertical CSS Pop-Out Menu', NULL, NULL, 0, 2 UNION ALL
SELECT 3, 'CSS Hover Navigation',     '#', 'SEO Consultants Directory', 2, 1 UNION ALL
SELECT 4, 'Horizontal Drop & Pop Menu', NULL, NULL, 0, 3 UNION ALL
SELECT 5, 'SEO Consultants Sample',     '#', 'SEO Consultants Vertical Example', 2, 2 UNION ALL
SELECT 6, 'Tanfa Demo example',         '#', 'Complete Example', 5, 1 UNION ALL
SELECT 7, 'Stage 1',                    '#', 'Vertical Menu - Page 1', 6, 1 UNION ALL
SELECT 8, 'Stage 2',                    '#', 'Vertical Menu - Page 2', 6, 2 UNION ALL
SELECT 9, 'Stage 3',                    '#', 'Vertical Menu - Page 3', 6, 3 UNION ALL
SELECT 10, 'Stage 4',                   '#', 'Vertical Menu - Page 4', 6, 4 UNION ALL
SELECT 11, 'Stage 5',                   '#', 'Vertical Menu - Page 5', 6, 5
SELECT   ID    ,
         [Name],
		 [Link],
		 [Title],
         CASE WHEN ParentID = 0
              THEN NULL
              ELSE ParentID
         END AS ParentID,
         [Order]
FROM     dbo.MenuMain
ORDER BY ParentID,
         [Order]
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Text;
public partial class HorizontalCssMenu : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //http://ago.tanfa.co.uk/css/examples/menu/tutorial-h.html#hs7
        //http://www.alistapart.com/articles/horizdropdowns/
        if (!IsPostBack)
        {
            LoadMenu();
        }
    }
    private void LoadMenu()
    {
        DataTable dtMenu = LoadData();
        
        StringBuilder sbMenu = new StringBuilder();
        foreach (DataRow dr in dtMenu.Rows)
        {
            if (string.IsNullOrEmpty(Convert.ToString(dr["ParentID"]))
                || Convert.ToString(dr["ParentID"]) == "0")
            {
                if (sbMenu.Length != 0)
                    sbMenu.Append(Environment.NewLine);
                sbMenu.Append("" + Environment.NewLine);                 sbMenu.Append("
- ");
sbMenu.Append("" + Convert.ToString(dr["Name"]) + "
" + Environment.NewLine);
sbMenu.Append(" 
" + Environment.NewLine + "
");
            }
            else
            {
                StringBuilder sbTemp = new StringBuilder();
                if (Convert.ToInt32(dr["Order"]) == 1)
                    sbTemp.Append(Environment.NewLine + "
");                 sbTemp.Append(Environment.NewLine + "
- ");
sbTemp.Append("" + Convert.ToString(dr["Name"]) + "");
sbTemp.Append(Environment.NewLine + " 
");                 if (Convert.ToInt32(dr["Order"]) == 1)                     sbTemp.Append(Environment.NewLine + "
");
                string id = "ID=\"" + Convert.ToString(dr["ParentID"]) + "\"";
                int length = sbMenu.ToString().IndexOf(id);
                if (length != -1)
                {
                    string Previous = sbMenu.ToString().Substring(0, length);
                    string Next = sbMenu.ToString().Substring(length);
                    if (Convert.ToInt32(dr["Order"]) == 1)
                        sbMenu.Insert((Previous.Length + Next.IndexOf("
")), sbTemp);
                    else
                        sbMenu.Insert((Previous.Length + Next.IndexOf("")), sbTemp);
                }
                else
                    sbMenu.Append(sbTemp);
            }
        }
        if (sbMenu.ToString().Length > 0)
        {
            menu.InnerHtml = sbMenu.ToString();
        }
    }
    public DataTable LoadData()
    {
        DataSet dsUserMenu = null;
        try
        {
            //Connection string from Web.Config
            string sDBConnection = "SERVER=;DATABASE=;UID=;pwd=";
            string[] sTableName = { "Menu" };
            string sQuery = @"SELECT     ID    ,
                                         [Name],
		                                 [Link],
		                                 [Title],
                                         CASE WHEN ParentID = 0
                                              THEN NULL
                                              ELSE ParentID
                                         END AS ParentID,
                                         [Order]
                                FROM     dbo.MenuMain
                                ORDER BY ParentID,
                                         [Order]";
            dsUserMenu = new DataSet();
            DBHelper.FillDataset(sDBConnection, CommandType.Text, sQuery, dsUserMenu, sTableName);
            dsUserMenu.DataSetName = "Menus";
            DataRelation objMenuRelation = new DataRelation("ParentChild",
                    dsUserMenu.Tables["Menu"].Columns["ID"],
                    dsUserMenu.Tables["Menu"].Columns["ParentID"],
                    false);
            objMenuRelation.Nested = true;
            dsUserMenu.Relations.Add(objMenuRelation);
            return dsUserMenu.Tables[0];
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
}
Download .cs, .aspx, .css, .sql file form below
HorizontalCssMenu.zip
References
ago.tanfa.co.uk
Example
alistapart