我米做这个
其提供的错误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}