我有一个位于用户控件上的radiobuttonlist
。此用户控件位于父用户控件的转发器中,而该用户控件位于带有提交按钮的页面上。
这样的东西:
<page>
<UserControl1>
<Repeater>
<UserControl2>
<radiobuttonlist>
</UserControl2>
</Repeater>
</UserControl1>
<Submit button />
</page>
CCD_ 2被动态地填充在CCD_ 3的代码后面。问题是,当我提交表单时,我需要访问radiobuttonlist
的SelectedValue
,而该值总是空的。即使我首先激发填充radiobuttonlist
的方法,RBL的selectedvalue
也是空的。我在RBL上有一个SelectedIndexChanged
事件处理程序,但它从不启动。
当我导致父页回发时,我需要做什么才能获得radiobuttonlist
的SelectedValue
?
我让它工作起来了。我想这是一个操作顺序的问题。修复方法是在UserControl2的OnInit()中动态声明单选按钮列表的事件处理程序。
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
rblOptions.SelectedIndexChanged += new EventHandler(ctrlOptions_SelectedIndexChanged);
}
一旦我这样做了,即使我在回发时重新实例化UserControl,事件也开始启动。由于事件正在启动,我可以获得所选索引,而无需将其保持在ViewState中。
发布数据时,会重新绑定数据,以便擦除所选事件或值。
尝试在您的Page_Load(用户控制)中使用此代码
If(! IsPostBack)
{
//You build RadioButtonList
}
并使用ViewState、EnableViewState="true"
持久化您的数据