请在asp.net中解决以下问题 [英] please solve below problem in asp .net

查看:74
本文介绍了请在asp.net中解决以下问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在这样做

i m doing this

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...


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

       );

推荐答案

并非子列ds.Tables["submenus"].Columns["submenu"]中的所有值在父列ds.Tables["menu"].Columns["menu"]中都具有值.

当子列的值分别为1,2,3,4,5,而父列的值仅为1,2,3,4时,会发生这种情况.


您应该在数据库中强制执行此约束,以便在添加没有父级menusubmenus时数据输入将失败.

为此,您的表结构应类似于:

表格菜单":
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


这篇关于请在asp.net中解决以下问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆