为什么动态创建Radmenu ItemClick事件不会触发

时间:2014-06-12 11:32:16

标签: c# asp.net telerik radmenu

我正在动态创建RadMenu。我想使用RadMenu的菜单点击事件。

实际上我正在使用if(!Scriptmanager.IsInAsyncPostBack)条件。

if条件下,我只编写动态创建菜单的代码。我将提供示例代码以便更好地理解。

if (!src.IsInAsyncPostBack)
{                  
    RadMenu menu = new RadMenu();
    RadMenuItem item1 = new RadMenuItem();
    item1.Text = "Home";
    RadMenuItem item11 = new RadMenuItem();
    item11.Text = "Home";
    item1.Items.Add(item11);                 
    RadMenuItem item2 = new RadMenuItem();
    item2.Text = "About";
    RadMenuItem item3 = new RadMenuItem();
    item3.Text = "Contact";
    menu.ItemClick += new RadMenuEventHandler(menu_ItemClick);                  

    menu.Items.Add(item1);
    menu.Items.Add(item2);
    menu.Items.Add(item3);
    Page.Controls.Add(menu);
}

void menu_ItemClick(object sender, RadMenuEventArgs e)
{
    Response.Redirect("Home.aspx");
}

当页面加载if(!IsInAsyncPostBack)条件为真时,RadMenu会动态创建并加载到页面中。

当我单击菜单项时,Postback变为true,因此if条件失败并且菜单 点击事件未触发。

我在if条件之外编写了菜单点击事件。在这种情况下,菜单点击事件也不会触发。

我的确切要求是我想使用if(!IsInAsyncPostBack)回发条件以及我需要使用菜单点击事件。有可能吗?

1 个答案:

答案 0 :(得分:0)

在Page_Init事件中添加它并删除if(!src.IsInAsyncPostBack)检查。这是以编程方式创建控件的最简单方法。

可能你的菜单是ajax启用的,所以它的POST是部分的,所以你的代码不会重新创建它,所以它不能提升它的处理程序。