как добавить событие menuItemClick, когда menuItem создается программно в asp.net?

В моем веб-приложении asp.net я программно создал меню и элемент меню на основе роли пользователя, вошедшего в систему. Код приведен ниже...

    Menu menu = new Menu();
    menu.CssClass = "menu";
    menu.IncludeStyleBlock = false;
    menu.EnableViewState = false;
    menu.Orientation = Orientation.Horizontal;

    if (roleType.equals("teacher"))
    {
        MenuItem categoryItemCh1 = new MenuItem("Home");
        categoryItemCh1.NavigateUrl = "Teacher/TestsList.aspx";
        menu.Items.Add(categoryItemCh1);

        MenuItem categoryItemCh2 = new MenuItem("Account");
        categoryItemCh2.NavigateUrl = "Account/underconstruction.aspx";
        menu.Items.Add(categoryItemCh2);

        MenuItem categoryItemCh3 = new MenuItem("Reports");
        categoryItemCh3.NavigateUrl = "Account/underconstruction.aspx";
        menu.Items.Add(categoryItemCh3);

        MenuItem categoryItemCh4 = new MenuItem("Logout");
        menu.Items.Add(categoryItemCh4);
    }

Итак, когда пользователь щелкает элемент меню выхода, мне нужно запустить событие click menuItem, чтобы выполнить следующий процесс.

1.Очистить все сеансы, связанные с пользователем
2.Перенаправить на страницу входа.

Но я не знаю, как программно добавить событие click MenuItem в asp.net. Пожалуйста, помогите мне решить эту проблему...


person Saravanan    schedule 17.01.2013    source источник


Ответы (3)


Используйте событие MenuItemClick. Вы добавляете событие не в каждый пункт меню, а в само меню.

menu.OnMenuItemClick += Menu_MenuItemClick;


void Menu_MenuItemClick(Object sender, MenuEventArgs e)
{
// Display the text of the menu item selected by the user.
Message.Text = "You selected " + 
  e.Item.Text + ".";
}

Вы можете использовать MenuEventArgs, чтобы выяснить, какой пункт меню был нажат

person keifer94    schedule 17.01.2013

Чтобы добавить обработчики событий в меню, вам потребуется использовать методы AddHandler или AddHandlers в EventHandlerList меню. Чтобы получить EventHandlerList, см. свойство Menu.Events.

person Russ    schedule 17.01.2013

Вот как я решил проблему...

    protected void RadMenu2_ItemClick(object sender, RadMenuEventArgs e)
    {

        switch (RadMenu2.SelectedItem.Text)
        {
            case "Menu Text 1":
                Your code or method;
                break;
            case "Menu Text 2":
                Your code or method;
                break;
            case "etc...":
                Your code or method;
                break;        
        }
person Scooter    schedule 02.02.2016