在ASP.NET中动态添加/删除菜单项?

时间:2011-04-20 15:10:57

标签: asp.net vb.net menu navigation

我有一个菜单控件(Menu1),我想根据我存储的有关数据库中经过身份验证的用户的某些信息,从菜单中添加/删除项目。我不确定如何从菜单控件访问特定菜单项并在运行时删除它们?

3 个答案:

答案 0 :(得分:2)

可以通过后面的代码访问ASP.NET菜单。例如,在标记中声明的菜单ID为“Menu1”,可以这样访问:

  foreach (MenuItem item in Menu1.Items) { 
    if (item.NavigateUrl.Contains(pageName)) {
       item.Selected = true;
       item.Text = "customText";  
    }
    // ... 
  }

在该示例中,根据菜单所在的当前页面选择当前选择的菜单项。同样,Items集合可用于添加或删除单个菜单项。 注意,在菜单 items 上,ChildItems集合可用于更改子菜单项集合。

更多信息:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.items.aspx

@Edit:使其与问题中的数据更加一致

答案 1 :(得分:0)

我希望你更具体,但我知道评论通知在这里很糟糕。所以,如果你能准确地告诉我

  1. 您将根据以下内容添加/删除项目的信息是什么?
  2. 它们是如何存储在数据库中的(这意味着它们是存储在配置文件表中的一个成员资格表中?还是存储在用户被引用的自定义表中?
  3. 你用简单的英语在脑海中想象出什么技术?
  4.   

    我不确定如何访问   菜单中的特定菜单项   控制并在运行时删除它们?

    • :一种。删除项目:

      Menu1.Items.Remove(Menu1.FindItem("Jobs"))

    • <强> B中。添加项目:

      Menu1.Items.Add(new MenuItem("News"))

      或者使用它来指定所需的 新添加项目的属性:

      MenuItem item = new MenuItem()

      item.NavigateUrl =""

      item.Text = "Child Test"

      Menu1.Items.Add(mnuTestChild)

答案 2 :(得分:0)

protected void Page_Load(object sender, EventArgs e)
{
    con.ConnectionString = ConfigurationManager.ConnectionStrings["MyConString"].ConnectionString;
    string selectCmd = "Select * from Pages where Status='"+1+"'";
    SqlDataAdapter dap = new SqlDataAdapter(selectCmd,con);
    DataSet ds = new DataSet();
    dap.Fill(ds);
    if (!Page.IsPostBack)
    {
        int x = 0;
        string parent_id = "";
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            parent_id = dr[0].ToString();
            Menu1.Items.Add(new MenuItem(dr["Title"].ToString(), dr["URL"].ToString(), dr["ID"].ToString()));
        }
        x++;
    }

}