我正在测试一个菜单,它是从DB填充的。它可以正常工作,直到我在上一个子菜单下添加另一个子菜单。
这是日期,问题是将数字8作为子菜单添加到数字6
ID MenuName MenuLoc ParentID
1 ParentItem1 NULL 0
2 ParentItem2 NULL 0
3 ParentItem3 NULL 0
4 SubMenuItem1 NULL 1
5 SubMenuItem2 NULL 1
6 SubMenuItem3 NULL 2
8 Sub NULL 6
以下是代码:
private void getMenu()
{
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Portal"].ConnectionString))
{
SqlCommand sqlComm = new SqlCommand("Menu_Test", conn);
sqlComm.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = sqlComm;
da.Fill(ds);
dt = ds.Tables[0];
}
DataRow[] drowpar = dt.Select("ParentID=" + 0);
foreach (DataRow dr in drowpar)
{
menuBar.Items.Add(new MenuItem(dr["MenuName"].ToString(),
dr["ID"].ToString(), "",
dr["MenuLocation"].ToString()));
}
foreach (DataRow dr in dt.Select("ParentID >" + 0))
{
MenuItem mnu = new MenuItem(dr["MenuName"].ToString(), dr["ID"].ToString(), "", dr["MenuLocation"].ToString());
menuBar.FindItem(dr["ParentID"].ToString()).ChildItems.Add(mnu);
}
}
代码崩溃了:menuBar.FindItem(dr [“ParentID”]。ToString())。ChildItems.Add(mnu);对象未设置为实例。