2012-02-23 23 views
2

PanelにRadButtonを動的に追加しています。ボタンをパネルに動的に追加する

 RadButton btnAwesome = new RadButton(); 
     btnAwesome.AutoPostBack = true; 
     btnAwesome.Text = "Click me..."; 
     btnAwesome.ID = "LinkButtonTest"; 
     btnAwesome.Click += new System.EventHandler(lnkbtnEditRecord_Click); 

を、それそれがonclickのこのメソッドを呼び出す必要があります::だから私はそうボタンを作成してい

protected void lnkbtnEditRecord_Click(object sender, EventArgs e) 
    { 
     salesEditPanel.Visible = true; 
     resultPanel.Visible = false; 
     zipPanel.Visible = false; 
     ddlPanel.Visible = false; 
     topPanel.Visible = false; 
    } 

それはボタンパネルが追加されますが、それはそれにonclickのを追加しません。私の欠点は何ですか?

ありがとうございます!

+0

クリックイベントのバインディングについて質問していますか?それはボタンのクリックで上げないのですか? –

+0

RadTuttonは何ですか?ボタン?またはラジオボタン? –

+0

@彼はTelerikコントロールを使用しています。 –

答えて

1

ここでの問題は、ポストバックの仕組みによるものです。ページがリクエストされるたびに(ポストバックされたかどうか)、コントロールインスタンスが作成されます。コントロールが作成され、他のページプロパティが設定されると、コントロールのプロパティを設定するためにviewstateが解析されます。イベントが作成され、ディスパッチされます。

ここで重要なのは、この「ページ」のインスタンスは、以前に生成したインスタンスと同じではありません。新しいもので、ASP.NET Webフォームエンジンはすべてのようにすべてのプロパティをに設定しました。同じ。しかし、この例では、btnAwesomeを作成していないので、「クリックイベント」を送信するものはありません。

これを変更するには、Page_Loadの最後にイベントを発生させるすべてのコントロールが作成されていることを確認する必要があります。したがって、btnAwesomeを再作成してパネルに追加してから、Clickイベントを発生させたい場合はPage_Loadから戻る必要があります。

2

ポストバックごとにボタンを初期化するには、そのコードを実行する必要があります。ページのライフサイクルの早い段階で十分に実行されていることを確認する必要があります。どのページイベントがそのコードであり、それは連続するポストバックごとに実行されますか?

関連する問題