2011-01-07 58 views
0

我正在生成UserControl的实例并将它们放入UL。在我的UserControl有一个事件按钮。我想问我如何保持我生成的用户控件的状态,以便它们在回发后保留在页面上并捕获它们的事件。在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中的#项)导致生成不同的控制集,这可能是问题。 – 2011-01-07 14:46:34

+0

嗯,ID做了窍门,发布一个答案,我会标记它 – Drahcir 2011-01-07 15:33:58

回答

1

这听起来像在帖子上,你没有运行上面列出的逻辑。你只在GET请求上运行上面的代码吗?无论GET或POST如何,您都可以确保它在Page_Load中执行。

另一种方法是编写一个UL Web用户控件,该控件具有添加ucFoo.ascx控件内置的逻辑。然后将这个UL网页用户控件(ascx)包含到您的网页中。

这会让你的生活更轻松,因为这个新的网页用户控件将永远在页面上,而且你不会动态添加控件。