Почему динамически создаваемое событие Radmenu ItemClick не запускается

Я динамически создаю 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) условие true, поэтому RadMenu создается динамически и загружается на страницу.

Когда я щелкаю пункт меню, Postback становится истинным, поэтому условие if не выполняется и событие щелчка по меню не запускается.

Я написал событие щелчка меню вне условия if. В этом случае событие щелчка меню также не срабатывает.

Мое точное требование заключается в том, что я хочу использовать if(!IsInAsyncPostBack) условие обратной передачи, а также мне нужно использовать событие меню нажатия. Является ли это возможным?

1 ответ

Добавьте это в событие Page_Init и удалите проверку if (! Src.IsInAsyncPostBack). Это самый простой способ создавать элементы управления программно.

Возможно, в вашем меню включена поддержка ajax, поэтому POST из него является частичным, поэтому ваш код не воссоздает его, поэтому он не может вызвать обработчик.

Другие вопросы по тегам