获取用户控件的数据绑定列表控件的选定索引

时间:2012-09-07 19:38:18

标签: asp.net user-controls

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

这样的事情:

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

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

当我导致父网页回发时,我需要做些什么才能获得SelectedIndexChanged的{​​{1}}?

2 个答案:

答案 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"

保留数据