如何在asp.net中以编程方式创建menuItem时添加menuItemClick事件?

时间:2013-01-17 05:51:33

标签: c# asp.net c#-4.0 asp.net-controls

在我的asp.net Web应用程序中,我已根据登录用户角色以编程方式创建了一个菜单和menuItem。下面给出了代码...

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

因此,当用户点击退出菜单项时,我必须触发menuItem点击事件以执行以下过程。

1.清除与用户相关的所有会话
  2.转到登录页面。

但我不知道如何在asp.net中以编程方式添加menuItem click事件。请指导我摆脱这个问题......

3 个答案:

答案 0 :(得分:2)

使用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确定单击了哪个菜单项

答案 1 :(得分:0)

要向菜单添加事件处理程序,您需要在菜单的EventHandlerList上使用AddHandler或AddHandlers方法。要获取EventHandlerList,请参阅Menu.Events属性。

答案 2 :(得分:0)

以下是我解决问题的方法......

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