我正在创建一个表单,用户可以注册他们对某个活动的兴趣,并注册多个人.
aspx类似于:
<asp:Repeater ...> <bunch of formatting and always there controls like firstname/lastname/address> <asp:PlaceHolder ...> <dynamic controls for workshop selection go here> </asp:PlaceHolder> </asp:Repeater>
活动可以举办用户可以注册的研讨会,研讨会的可用性取决于他们选择参加活动的日期.研讨会的可用性取决于日期,因此他们在选择日期之前不能选择研讨会.
无论如何,我添加的动态控件基本上是一堆文字和一堆单选按钮组.
我开始在ItemDataBound事件处理程序中添加控件,但是当我将转发器项目保存回我的委托列表时,单选按钮的ViewState从未更新过. ItemTemplate中引用的所有字段都处理得很好,但不是我动态添加的单选按钮.
我尝试使用ItemCreated事件,在那里添加我的按钮,但这似乎没有任何区别.最后,我决定了一个基于this的解决方法.基本上我只是在文字中输出HTML输入字段并从请求中读回来.
这一切现在都很完美,而且我对功能感到满意,只需要将单选按钮直接输出为HTML输入而不是使用服务器端控件,这看起来真的很脏.有没有人知道为什么ViewState没有正确恢复?
为了清楚起见,每次都以相同的顺序重新创建控件,并正确设置ID.我在整个地方使用动态控件并且它们工作正常,当我将它们添加到转发器中时,我无法让它们在这种情况下工作.
//更多澄清
我无法在Page.Init中创建这些控件,因为用户选择导致回发的日期,我必须在创建动态控件之前等待该控件的视图状态加载.
解决方法
检查你是否足够早地绑定你的转发器 – Page.Init没关系; Page.Load为时已晚.
原文地址:https://www.jb51.cc/csharp/99487.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。