0

我正在动态创建一个 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 会动态创建并加载到页面中。

当我单击菜单项时,回发为真,因此 if 条件失败并且菜单单击事件未触发。

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

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

4

1 回答 1

0

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

可能您的菜单启用了 ajax,因此来自它的 POST 是部分的,因此您的代码不会重新创建它,因此它无法引发其处理程序。

于 2014-06-17T13:45:45.057 回答