Click here to Skip to main content
15,896,154 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
i m doing this

C#
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;
    }

its giving error
This constraint cannot be enabled as not all values have corresponding parent values.
in...


VB
ds.Relations.Add("Children",
     ds.Tables["menu"].Columns["menu"] ,
       ds.Tables["submenus"].Columns["submenu"]

       );
Posted
Updated 21-Oct-11 21:21pm
v3
Comments
Mehdi Gholam 22-Oct-11 3:12am    
What is the error?
uspatel 22-Oct-11 3:12am    
What error occurs
[no name] 22-Oct-11 3:22am    
Can you give the exact error text so it would be easier to help?
soniya sangal 22-Oct-11 3:51am    
i have solve that problem but again one problem ocur in below code..
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);
}





}
in this code not find child item

1 solution

Not all values in the child column ds.Tables["submenus"].Columns["submenu"] have a value in the parent column ds.Tables["menu"].Columns["menu"].

This happens when the child column has values like 1,2,3,4,5 and the parent column only has the values 1,2,3,4.


You should enforce this constraint in your database so that data entry will fail when adding submenus that do not have a parent menu.

For this to work you table structure should look something like:

Table "menus":
ID  Menu
1   File
2   Edit
3   Extra

Table "submenus":
P_ID ID Menu
1    1  Open
1    2  Save
1    3  Close
2    1  Add
2    2  Remove
3    1  Options
 
Share this answer
 
v3
Comments
soniya sangal 22-Oct-11 4:03am    
i ave two columns in parent table id,menu
where id is 3 and menu is package

and i hv 3 column in child table s_id,id,submenu

where s_id is 1,2
id is 1,1
submenu is domestic, international


its show only package at runtime

how can solve that problem???

thanx
soniya sangal 22-Oct-11 4:04am    
sorry please consider it


i ave two columns in parent table id,menu where id is 3 and menu is package and i hv 3 column in child table s_id,id,submenu where s_id is 1,2 id is 3,3 submenu is domestic, international its show only package at runtime how can solve that problem??? thanx

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900