2012-02-03 12 views
3

我在页面上有一组以编程方式添加的用户控件(它们是在主页面的Init事件期间创建和添加的)。这些控件中的每一个控件都在他自己的Init事件中以编程方式添加按钮
(所以它的“两个层面”动态创建的控件的。不知道它的问题。)如何在页面初始化期间访问以编程方式添加UserControl的视图状态?

我需要而创建这些按钮访问视图状态(我用的视图状态记住用户数据)。

protected void Page_Init(object sender, EventArgs e) 
{ 
    // I need my ViewState right now ! 
    Button myButton = new Button(); 
    myButton.Text = "Click me"; 
    myButton.Command += new CommandEventHandler(myCommandHandler); 
    myButton.CommandName = "Delete"; 
    myButton.ID = "myButtonID"; 
    myPlaceholder.Controls.Add(myButton); 
} 

我知道viewstate在Init事件中不可用。但是,如果按钮在Init之后创建,按钮不会触发它们的事件(OnClick等)。

  • 如何创建动态控件同时访问viewstate?

回答

1

我不认为你可以。不理想,但我会在这个例子中将用户数据放在Session。动态控制很难处理,我认为这是一个平衡点。 ViewState加载后Page_Init - 此forum post确认

另一种选择可能是将信息存储在您自己的隐藏字段中。这些将在回发期间在Request.Form集合中可用,并将可用。当然,如果你使它们成为runat="server"(你可能需要),框架会将所有的命名容器id添加到名称中,所以在挖掘它们时你必须有点聪明。虽然我会试图坚持会话

当然,其他人可能会知道不同。

+0

谢谢。当使用'Request.Form'使用隐藏字段并阅读它们的内容时,它似乎工作。我仍然不明白为什么动态控件不容易处理。我尽量避免他们尽可能多^^ – 2012-02-06 18:24:30

相关问题