Динамически добавлять / удалять пункты меню в ASP.NET ?

#asp.net #vb.net #menu #navigation

#asp.net #vb.net #меню #навигация

Вопрос:

У меня есть элемент управления меню (Menu1), и я хочу добавлять / удалять пункты из меню на основе определенной информации, которую я сохранил об аутентифицированном пользователе в базе данных. Я не уверен, однако, как получить доступ к определенным пунктам меню из элемента управления menu и удалить их во время выполнения?

Комментарии:

1. Любой из ответов решает вашу проблему! .. жду ваших отзывов =)

Ответ №1:

ASP.NET доступ к меню можно получить с помощью встроенного кода. Меню, объявленное в разметке, имеющее идентификатор ‘Menu1’, например, может быть доступно следующим образом:

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

В этом примере выбранный в данный момент пункт меню выбирается в соответствии с текущей страницей, на которой находится меню. Точно так же, коллекция Items может использоваться для добавления или удаления отдельных пунктов меню.
Обратите внимание, что для элементов меню коллекция ChildItems может использоваться для изменения коллекции элементов подменю.

Дополнительная информация:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.items.aspx

@Edit: сделал это более согласованным с данными в вопросе

Ответ №2:

Хотелось бы, чтобы вы были более конкретными, но я знаю, что уведомление о комментариях здесь своего рода отстой. итак, если бы вы могли сказать мне точно

  1. на основе какой информации вы будете добавлять / удалять элементы?
  2. как они хранятся в базе данных (что означает, что они хранятся в одной из таблиц членства? в таблице профиля? или пользовательскую таблицу, в которой содержится ссылка на пользователя?
  3. какую технику вы представляете в своем воображении простым английским языком?

Я не уверен, однако, как получить доступ к определенным пунктам меню из элемента управления menu и удалить их во время выполнения?

  • A. Удалять элементы:

    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)

Ответ №3:

 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  ;
    }

}