将childitem绑定到菜单控件asp.net

时间:2014-02-28 11:38:46

标签: asp.net menu

DataRow[] drowpar = dt.Select("Parent_Id=" + 0);
    foreach (DataRow dr in drowpar)
    {
        MenuItem objMenuItem = new MenuItem();
        objMenuItem.Text = dr["Page_Name"].ToString();
        objMenuItem.NavigateUrl = dr["Page_Url"].ToString();
        MenuBar.Items.Add(objMenuItem);
    }
    foreach (DataRow dr in dt.Select("Parent_Id >" + 0))
    {
        MenuItem objMenuItem = new MenuItem();
        objMenuItem.Text = dr["Page_Name"].ToString();
        objMenuItem.NavigateUrl = dr["Page_Url"].ToString();
        //MenuBar.FindItem(dr["Parent_Id"].ToString()).ChildItems.Add(objMenuItem);
        MenuBar.FindItem(dr["Parent_Id"].ToString()).ChildItems.Add(objMenuItem);
        //MenuBar.Items.Add(objMenuItem);
    }

我使用数据库绑定asp.net菜单控件,并在childitem绑定到菜单

下面进行此操作

对象引用未设置为对象的实例。

 MenuBar.FindItem(dr["Parent_Id"].ToString()).ChildItems.Add(objMenuItem);

1 个答案:

答案 0 :(得分:1)

该错误消息仅在特定情况下发生,可能的原因是:

  • objMenuItem为空 - 显然在您的代码中它不是
  • dr["Parent_Id"]为空,并且调用ToString()会导致错误
  • MenuBar.FindItem(dr["Parent_Id"].ToString()) - 这不是找到具有给定父ID的项目
  • 菜单项上的ChildItems集合为空

如果您想确定对象不在null的位置,那么您可以执行以下操作:

var id = dr["Parent_ID"].ToString();
var menuItem = MenuBar.FindItem(id);
if (menuItem != null)
    menuItem.ChildItems.Add(objMenuItem);

将代码放在一起掩盖发生实际错误的位置。请注意,还有一个其他方案,我没有考虑,这是错误是在MenuBar本身,并且它被屏蔽。没有看到完整的堆栈跟踪,很难说。如果您可以发布,我们可以进一步隔离它。