当前位置: 首页 > 编程语言 > C#

repeater中动态控制的viewstate问题分享

时间:2023-04-10 17:32:17 C#

repeater中动态控制的viewstate问题最近在使用repeater的时候遇到了一个问题,我是在添加动态控制的,虽然我有workaround,functionDoesexactlywhatIwant,但我想知道是否有更好的方法来理解我的理解。我已经使用ASP.NET大约6个月了,每次我认为我的页面生命周期/视图状态都是因为我无法回答的问题。我正在创建一个表单,用户可以在其中注册他们对事件的兴趣,并注册多个人。aspx是这样的:一个活动可以举办一个用户可以注册的研讨会,研讨会的可用性取决于他们选择参加活动的日期。研讨会的可用性取决于日期,因此在选择日期之前他们无法选择研讨会。反正我加的动态控件基本上就是一堆文字和一堆单选按钮组。我开始在ItemDataBound事件处理程序中添加控件,但是当我将转发器项目保存回我的委托列表时,单选按钮的ViewState从未更新。ItemTemplate中引用的所有字段都处理得很好,但不是我动态添加的单选按钮。我尝试使用ItemCreated事件,在那里添加我的按钮,但这似乎没有任何区别。最后,我决定基于此解决方法。基本上,我只是以文本形式输出HTML输入字段,然后从请求中读回。现在一切正常,我对功能很满意,只需将单选按钮直接输出为HTML输入,而不是使用服务器端控件,这看起来真的很脏。有谁知道为什么ViewState没有被正确恢复?为清楚起见,每次都以相同的顺序重新创建控件,并正确设置ID。我到处都在使用动态控件并且它们工作正常,当我将它们添加到中继器时,在这种情况下我无法让它们工作。//更多说明我无法在Page.Init中创建这些控件,因为用户选择了导致回发的日期,我必须等待控件的视图状态加载,然后才能创建动态控件。当转发器绑定到它的数据源时,您正在创建(或重新创建)控件。如果在页面加载ViewState之后发生这种情况,则ViewState将不可用于动态创建的控件。检查你是否足够早地绑定你的转发器——Page.Init没问题;Page.Load为时已晚。值得注意的是,Radiobuttons控件不能与中继器控件“开箱即用”。Repeater控件继承了INamingContainer接口,确保所有呈现的html控件都具有唯一的名称属性。由于单选按钮是使用name属性分组的,这意味着您将无法创建单选按钮组,即设置GroupName属性不会产生预期的效果,因为Repeater将覆盖它并为每个单选按钮。以上就是C#学习教程的全部内容:转发器中动态控件的viewstate问题。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: