Почему динамически создаваемое событие 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 из него является частичным, поэтому ваш код не воссоздает его, поэтому он не может вызвать обработчик.