我有一个radiobuttonlist
,它位于用户控件上。此用户控件位于父用户控件的转发器中,并且该用户控件位于具有提交按钮的页面上。
这样的事情:
<page>
<UserControl1>
<Repeater>
<UserControl2>
<radiobuttonlist>
</UserControl2>
</Repeater>
</UserControl1>
<Submit button />
</page>
在radiobuttonlist
的代码隐藏中动态填充UserControl2
。问题是,当我提交表单时,我需要访问SelectedValue
的{{1}},并且该值始终为空。即使我首先触发填充radiobuttonlist
的方法,但RBL的radiobuttonlist
为空。我在RBL上有一个selectedvalue
事件处理程序,但它永远不会触发。
当我导致父网页回发时,我需要做些什么才能获得SelectedIndexChanged
的{{1}}?
答案 0 :(得分:1)
我得到了它的工作。我想这是一个操作顺序问题。修复是在UserControl2的OnInit()中动态声明radiobuttonlist的事件处理程序。
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
rblOptions.SelectedIndexChanged += new EventHandler(ctrlOptions_SelectedIndexChanged);
}
一旦我这样做,即使我在回发时重新实例化UserControl,事件也会开始触发。由于事件被触发,我能够获得所选索引而无需将其保存在ViewState中。
答案 1 :(得分:0)
发布数据时,重新绑定数据,以便清除所选的一个或多个事件。
在Page_Load(用户控制中)
中尝试使用此代码If(! IsPostBack)
{
//You build RadioButtonList
}
使用ViewState EnableViewState="true"