-1

我有一个radiobuttonlist住在用户控件上的。此用户控件位于父用户控件上的转发器中,并且该用户控件位于带有提交按钮的页面上。

所以是这样的:

<page>
<UserControl1>
  <Repeater>
    <UserControl2>
      <radiobuttonlist>
    </UserControl2>
  </Repeater>
</UserControl1>
<Submit button />
</page>

动态填充在的radiobuttonlist代码隐藏中UserControl2。问题是,当我提交表单时,我需要访问 的SelectedValueradiobuttonlist并且该值始终为空。即使我首先触发填充 的方法,radiobuttonlistRBLselectedvalue的 也是空的。我SelectedIndexChanged在 RBL 上有一个事件处理程序,但它从不触发。

当我导致父页面回SelectedValue发时,我需要做什么才能获得?radiobuttonlist

4

2 回答 2

1

我让它工作了。我猜这是操作顺序问题。解决方法是在 UserControl2 的 OnInit() 中动态声明单选按钮列表的事件处理程序。

protected override void OnInit(EventArgs e) 
{ 
    base.OnInit(e);
    rblOptions.SelectedIndexChanged += new EventHandler(ctrlOptions_SelectedIndexChanged);
} 

一旦我这样做了,事件就会开始触发,即使我在回发时重新实例化了 UserControl。由于事件被触发,我无需将其保存在 ViewState 中即可获得选定索引。

于 2012-09-12T13:35:09.503 回答
0

当您发布您的数据时,您会重新绑定您的数据,以便删除您选择的事件或值。

在您的 Page_Load (您的用户控件)中尝试使用此代码

If(! IsPostBack)
{
   //You build RadioButtonList

}

并使用 ViewState 持久化您的数据,EnableViewState="true"

于 2012-09-07T19:53:26.540 回答