2011-01-17 30 views
0

私は、動的に生成されたドロップダウンリストコントロールを含むページを持っています。動的ドロップダウンリストは、選択した値を使用して他のフィールドを埋めるためにオートポストバックを実行します。これは私が動的にコントロールを作成するために使用しているコードです:イベントハンドラを動的ドロップダウンリストに追加

 If (Not IsPostBack) Then 
      Dim newDDL As DropDownList = New DropDownList() 
      AddHandler newDDL.SelectedIndexChanged, AddressOf ChangeValue 
      newDDL.ID = "Level1" 
      [fill the DropDownList] 
      newDDL.Items.Insert(results.Count, New ListItem("", -1)) 
      newDDL.Width = "300"  
      newDDL.AutoPostBack = True 
      newDDL.SelectedIndex = results.Count 

      LevelDDLs.Controls.Add(newDDL) 
      LevelDDLs.Controls.Add(New LiteralControl("<br /><br />")) 
    End If 

は、コントロールが正しく充填され、レンダリングされたASPページではなく、値を選択した後、ページが(AutoPostBackのが呼ばれた)再ロードされますが、コントロールがあるさ放映されず、サブは呼び出されません。私はChangeValueサブにブレークポイントを置くが、何も起こらない。

最初のDropDownListのハンドラは必要ではありませんが、DropDownListにchangevalueの後に私のsubを呼び出すように指示する方法はありますか?

お願いします。

多くのおかげで、
アンドレア

答えて

1

あなたがそうでなければ、彼らはViewStateのから自分のselectedIndexを再作成せず、何もイベントは発生しません、ドロップダウンのIDを設定する必要があります。彼らはすべてのポストバックで同じ一意のIDを取得する必要があります。

動的に追加されるすべてのコントロールは、ポストバックごとにに再作成する必要があります。このpage life cycleステージの後にビューステートが保存されるため、最新のPage_Loadでこれを行う必要があります。

+0

申し訳ありませんが、切り取りと貼り付けの際に、私はその行を削除しました。私は投稿にそれを固定しています。 –

+0

@アンドレア:私もあなたがコメントしている間に私の答えを編集しました;) –

+0

うん!それは動作します、私は!ispostbackの外でコードを実行しようとしたときIDを逃しました:) –

関連する問題