在回发时维护动态添加的用户控件的状态
本文关键字:用户 控件 状态 添加 动态 维护 | 更新日期: 2023-09-27 17:50:57
我有一个用户控件,它只包含一个文本框,在另一个表单上我动态地添加了这个用户控件,用户可以多次添加这个用户控件。我使用会话变量来重新创建用户控件(也许这种方法听起来不太酷)。在重新创建控件之后,文本框的值显然会消失。是否有任何解决方案可以在回发时维护用户控件的状态?
如果在正确的页面生命周期事件(PreInit
)期间将动态控件添加回控件,它们将通过IPostBackDataHandler
接口保持其状态。
PreInit -创建或重新创建动态控件。
我以前也遇到过同样的问题。
我所做的是给动态添加的控件一个ID,并确保它在回发时也保留该ID(在我的情况下,我保留会话中的所有信息,并重新创建控件)。
一旦回发控件具有与以前相同的ID, Microsoft就会变魔术,用回发前的值重新填充控件。
使用对象缓存。将usercontrol添加到缓存中,并在需要时检索它。
你可以在asp.net -教程缓存和对象缓存中看到一个很好的例子。
我现在也在学习asp.net,发现这是一个很好的解释。我还使用了Microsoft Library
每个继承IPostBackDataHandler接口的服务器控件都有一个处理回发数据的LoadPostData方法。当控件由一个类(页面,表单,占位符,控件等)实现时,该类调用LoadPostData方法并传递已发布的数据和键来维护控件状态。
所有你需要做的是重新实例化/重新初始化动态控件之前或在页面加载事件,每次回发和添加这个控件到页面/表单/占位符。然后,通过父控件调用LoadPostData方法,将提交的数据自动分配给控件。
查看本文以了解如何编写动态控制代码如何在asp.net