0

したいのですが、display submenu dynamically from databaseメニューバーの行でエラーが発生しています。FindItem(dr["ParentMenuId"].ToString()).ChildItems.Add(mnu);そのオブジェクト参照がオブジェクトのインスタンスに設定されていません。私もそうですunable to display my submenu。エラーは何ですか教えてください。

私のコードは次のとおりです。

protected void Page_Load(object sender, EventArgs e)
{
    if (! IsPostBack)
        getMenu(); 
}

private void getMenu()
{
    SqlConnection con = new SqlConnection(@"Data Source=ST015\SQLEXPRESS;Initial Catalog=MyData;Integrated Security=True");
    con.Open();
    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    string sql = "Select * from Categories";
    SqlDataAdapter da = new SqlDataAdapter(sql, con);
    da.Fill(ds);
    dt = ds.Tables[0];
   // DataRow[] drowpar = dt.Select("ParentMenuId=" + 0);

    foreach (DataRow dr in dt.Select("ParentMenuId=" + 0))
    {
        menuBar.Items.Add(new MenuItem(dr["MenuName"].ToString(),
                dr["MenuId"].ToString(), "",
                dr["MenuDescription"].ToString()));
    }

    foreach (DataRow dr in dt.Select("ParentMenuId >" + 0))
    {
        MenuItem mnu = new MenuItem(dr["MenuName"].ToString(),
                       dr["MenuId"].ToString(),
                       "", dr["MenuDescription"].ToString());
        menuBar.FindItem(dr["ParentMenuId"].ToString()).ChildItems.Add(mnu);

    }
    con.Close();
}

}

4

2 に答える 2

0

これは古いですが、解決されていないようです。同じ問題が発生しました。
ParentMenuId と MenuId のデータ型をデータベースから整数に変更する必要があります。

于 2014-07-18T09:01:52.970 に答える
0

それがあなたが得ている理由だと思いdr["ParentMenuId"]ます..値を取得しているかどうかを確認してください....常に次のようにnull許容値を確認してください....nullnull reference errordr["ParentMenuId"]

foreach (DataRow dr in dt.Select("ParentMenuId=" + 0))
{
   if(dr["MenuName"]!=null && dr["MenuId"]!=null && dr["MenuDescription"]!=null)
   {
     menuBar.Items.Add(new MenuItem(dr["MenuName"].ToString(),
            dr["MenuId"].ToString(), "",
            dr["MenuDescription"].ToString()));
   }
}

foreach (DataRow dr in dt.Select("ParentMenuId >" + 0))
{
   if(dr["MenuName"]!=null && dr["MenuId"]!=null && dr["MenuDescription"]!=null)
   {
     MenuItem mnu = new MenuItem(dr["MenuName"].ToString(),
                   dr["MenuId"].ToString(),
                   "", dr["MenuDescription"].ToString());
   }

   if(dr["ParentMenuId"]!=null)
   {
     menuBar.FindItem(dr["ParentMenuId"].ToString()).ChildItems.Add(mnu);
   }
}
于 2012-10-26T06:33:56.913 に答える