2011-01-07 11 views
0

UserControlのインスタンスを生成し、ULに入れています。私のUserControlには、イベントのあるボタンがあります。私は、私が生成したUserControlsの状態をポストバック後にページに残し、イベントを捕捉するために、どのように状態を保持できるかを尋ねたいと思います。ASP.NETの複数のユーザーコントロールの状態を維持する

For i As Integer = 0 To lstFoo.Count - 1  
    Dim liFoo As New HtmlGenericControl("li") 
    Dim ucMyFoo As ucFoo = LoadControl("userControls/ucFoo.ascx") 

    liFoo.Controls.Add(ucMyFoo) 
    ucMyFoo.DoSomething() 
    ulFoo.Controls.Add(liFoo) 
Next 
+2

ucMyFooにIDを割り当てていません。ポストバック後に異なるもの(たとえばlstFooの項目数)が生成され、異なるコントロールセットが生成される場合、これが問題になる可能性があります。 –

+0

うーん、IDはトリックを行い、回答を投稿し、私はそれをマークします – Drahcir

答えて

1

これはポストのように聞こえますが、あなたは上記のロジックを実行していません。上記のコードをGETリクエストでのみ実行していますか? GETまたはPOSTに関係なくPage_Loadで実行されていることを確認できます。

もう1つの方法は、ucFoo.ascxコントロールを組み込むロジックを持つUL Webユーザーコントロールを作成することです。次に、このUL Webユーザーコントロール(ascx)をWebフォームに含めます。

この新しいWebユーザーコントロールは常にページ上にあり、コントロールを動的に追加していないため、作業が楽になります。

+0

ポストバックにコードを置くと、userControlシンプルが再生成され、イベントが失われます。 – Drahcir

+0

他のusercontrolにリストを入れようとしました....私はまだポストバックでusercontrolsのリストを失う – Drahcir

+0

イベントハンドラも再追加する必要があります。それは期待どおりに動作するはずです。一般に、aspxマークアップに物を追加する方がいいのであれば、この頭痛を避けることができます。 – Greg

関連する問題