C#学习教程:如何持久化动态控件(c#)在按钮单击事件中,此控件被实例化,然后添加到页面中。它是一个具有自己的按钮事件的动态控件。为了触发这些按钮事件,必须在后续的page_load/onload生命周期阶段中的Page_Load/OnLoad结束时绘制控件。我的问题是如何保持这种控制?我不能将它存储在Session对象中,因为它包含不可序列化的项目。您应该在每次回发时重新创建动态控件。最好的方法是CreateChildControls方法。要在按钮点击设置中添加动态控件,请在点击处理程序中放置一些标志(持久标志-所以它应该在视图状态或会话状态中)-它应该表明在下一个页面创建时应该将控件添加到它。在此之后你应该设置ChildControlsCreated=false;再次执行CreateChildControls后,您的控件将正确创建并且是持久的(直到您不清除标志)。所以它应该这样做:protectedoverridevoidCreateChildControls(){base.CreateChildControls();如果(ViewState["AddControl"]==true){Controls.Add(newMyControl(){Id="someId"});}}和btn处理程序privatevoidOnShowControlClick(objectsender,EventArgse){ViewState["AddControl"]=true;ChildControlsCreated=false;通常对于动态控件,它们必须在每次回发时添加,并且每次都需要连接事件。我相信您需要做的就是在初始化期间使用相同的id重新创建它,asp.net引擎将从视图状态填充它。这是我的头顶,所以我可能有一些细节。对于所有HTML页面,必须在每次页面请求时重新创建控件。ASP.NET使用ViewState和Session等机制在“幕后”处理很多事情。如果ViewState没有(或不能)跟踪您的控件,那么您需要自己处理。我不知道你的控件有多复杂,但作为起点,你可能想阅读处理CreateChildControls事件(MSDN)hereItisusedandneedstoknowmoreaboutC#learningtutorials。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
