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)条件が true の場合、RadMenu が動的に作成され、ページに読み込まれます。

メニュー項目をクリックすると Postback が true になるため、if 条件が失敗し、メニュー クリック イベントが発生しません。

メニューのクリックイベントをif条件の外に書きました。この場合、メニュー クリック イベントも発生していません。

私の正確な要件は、if(!IsInAsyncPostBack)メニュークリックイベントを使用する必要があるだけでなく、ポストバック条件を使用することです。出来ますか?

4

1 に答える 1

0

これを Page_Init イベントに追加し、if (!src.IsInAsyncPostBack) チェックを削除します。これは、プログラムでコントロールを作成する最も簡単な方法です。

おそらく、メニューは ajax 対応であるため、メニューからの POST は部分的であるため、コードはそれを再作成しないため、ハンドラーを発生させることができません。

于 2014-06-17T13:45:45.057 に答える