简体   繁体   English

为什么动态创建的Radmenu ItemClick事件没有触发

[英]Why dynamically created Radmenu ItemClick event is not firing

I am dynamically creating a RadMenu. 我正在动态创建一个RadMenu。 I want to use the menu click event of the RadMenu. 我想使用RadMenu的菜单单击事件。

Actually I am using if(!Scriptmanager.IsInAsyncPostBack) condition. 其实我正在使用if(!Scriptmanager.IsInAsyncPostBack)条件。

Within the if condition I only write code to create the menu dynamically. if条件下,我只编写代码来动态创建菜单。 I'll give the sample code for better understanding. 我将提供示例代码以更好地理解。

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

When page loading if(!IsInAsyncPostBack) condition true so the RadMenu is created dynamically and loaded in the page. 当页面加载if(!IsInAsyncPostBack)条件为true时,将动态创建RadMenu并将其加载到页面中。

When I click the menu item, Postback becomes true, so the if condition fails and the menu click event is not firing. 当我单击菜单项时,Postback变为true,因此if条件失败并且菜单click事件未触发。

I wrote the menu click event outside of the if condition. 我在if条件之外编写了菜单单击事件。 In this case the menu click event is also not firing. 在这种情况下,菜单单击事件也不会触发。

My exact requirement is that I want to use if(!IsInAsyncPostBack) postback condition as well as I need to use menu click event. 我的确切要求是,我想使用if(!IsInAsyncPostBack)回发条件,也需要使用菜单单击事件。 Is it possible? 可能吗?

Add this in the Page_Init event and remove the if (!src.IsInAsyncPostBack) check. 将其添加到Page_Init事件中,然后删除if(!src.IsInAsyncPostBack)检查。 THis is the easiest way to create controls programmatically. 这是以编程方式创建控件的最简单方法。

Probably your menu is ajax-enabled so a POST from it is partial, so your code does not recreate it, so it cannot raise its handler. 您的菜单可能启用了Ajax,因此从菜单进行的POST是局部的,因此您的代码不会重新创建它,因此它无法引发其处理程序。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM