返回首页

我米做这个

protected void Page_Load(object sender, EventArgs e)

    {

        PopulateMenu();

    }

    private void PopulateMenu()

    {

        DataSet ds = GetDataSetForMenu();

        Menu menu = new Menu();

 

        foreach (DataRow parentItem in ds.Tables["menu"].Rows)

        {

            MenuItem categoryItem = new MenuItem((string)parentItem["menu"]);

            menu.Items.Add(categoryItem);

 

            foreach (DataRow childItem in parentItem.GetChildRows("Children"))

            {

                MenuItem childrenItem = new MenuItem((string)childItem["submenu"]);

                categoryItem.ChildItems.Add(childrenItem);

 



 

                foreach (DataRow GrandchildItem in childItem.GetChildRows("GrandChildren"))

                {

 

                    MenuItem GrandchildrenItem = new MenuItem((string)GrandchildItem["city"]);

                    childrenItem.ChildItems.Add(GrandchildrenItem);

                }

 



 



 

            }

        }

 

        Panel1.Controls.Add(menu);

        Panel1.DataBind();

        menu.Orientation = Orientation.Horizontal;

        menu.StaticMenuItemStyle.CssClass = "menuItem";

        menu.DynamicMenuItemStyle.CssClass = "menuItem";

        menu.Width = 800;

 

        // menu.BackColor = System.Drawing.Color.Black;



    }

 



 



    private DataSet GetDataSetForMenu()

    {

        SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

        SqlDataAdapter adMenu = new SqlDataAdapter("select * from menu order by id", myConnection);

        SqlDataAdapter adSubMenu = new SqlDataAdapter("select * from submenus", myConnection);

        SqlDataAdapter adSubSubMenu = new SqlDataAdapter("select * from subsubmenu", myConnection);

 



        DataSet ds = new DataSet();

        adMenu.Fill(ds, "Menu");

        adSubMenu.Fill(ds, "SubMenu");

        adSubSubMenu.Fill(ds, "SubSubMenu");

        //object str = ;

        ds.Relations.Add("Children",

      ds.Tables["menu"].Columns["menu"] ,

        ds.Tables["submenus"].Columns["submenu"]

        

        );

        

        ds.Relations.Add("GrandChildren",

        ds.Tables["submenus"].Columns["submenu"],

        ds.Tables["subsubmenu"].Columns["city"]);

        return ds;

    }

其提供的错误
不能被启用此约束,因为不是所有的值都有相应的父值。
......
{C}| soniya sangal:安德烈Kraak。并非所有的值在子列ds.Tables ["子菜单"]列"子菜单"父列ds.Tables ["菜单"]列的值[ "菜单"。

这种情况发生时,孩子列有像1,2,3,4,5值和父列值1,2,3,4。
你应该执行数据库中的约束,使数据输入会没有父菜单的子菜单时失败。

对于这个工作,你的表结构应该是这样的:

表"菜单":
ID  Menu

1   File

2   Edit

3   Extra
表"子菜单":
{体C3}

回答