2014-01-15 74 views
1

我有2个RadioButtonLists,我只想要选择一个选项,f.i.如果您在清单1中选择了一个选项,则应清除清单2中的选项。RadioButtonList设置为AutoPostBack = true,但仍然没有触发OnSelectedIndexChanged

AutoPostBack和EnableViewState设置为true,但仍然不会触发该方法。我也检查了索引是否真的发生了变化。我认为PostBack不会发生,但我不知道为什么。

我很感激任何帮助。

ASCX:

<asp:RadioButtonList ID="_listOne" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ListOneIndexChanged"> 
</asp:RadioButtonList> 
<asp:RadioButtonList ID="_listTwo" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ListTwoIndexChanged"> 
</asp:RadioButtonList> 

代码背后:

protected void ListOneIndexChanged(object sender, EventArgs e) 
{ 
    _listTwo.ClearSelection(); 
} 
protected void ListTwoIndexChanged(object sender, EventArgs e) 
{ 
    _listOne.ClearSelection(); 
} 
+4

'“我认为这回发只是不发生”' - 您是否已经验证这一点?浏览器的调试工具会告诉你是否发出请求,响应是什么,是否存在客户端错误等等。在回调过程中,在“Page_Load”事件中是否发生了任何事情?也许列表在该方法中重新填充,并且选择更改的事件丢失了?你需要稍微调试一下。 – David

+0

你是否在使用updatepanels? – wingyip

+0

是的,我已验证没有请求。 Page_Load没有任何反应,列表也没有重新填充。当我提交页面时,提交了正确的索引,所以我认为索引实际上发生了变化? – user3198448

回答

1

变化控制到单选按钮,并添加组名给他们就可以了:

<asp:RadioButton ID="_listOne" runat="server" GroupName="xx" AutoPostBack="true" OnSelectedIndexChanged="ListOneIndexChanged"> 
</asp:RadioButton> 
<asp:RadioButton ID="_listTwo" runat="server" GroupName="xx" AutoPostBack="true" OnSelectedIndexChanged="ListTwoIndexChanged"> 
</asp:RadioButton> 
+0

我会尝试这样做,即使我将不得不在.cs中创建它们,因为我不知道将会有多少个RadioButton。 – user3198448

+0

将它们包装在一个面板或一些容器中,然后你可以使用'panel.Controls.Add' – dragon753

+0

不应该'OnSelectedIndexChanged'实际上是'OnCheckedChanged'? – GlennG

0

尽量只使用一个radibuttonlist和选项。

<asp:RadioButtonList id="radiolist1" runat="server" OnSelectedIndexChanged="ListOneIndexChanged"> 

    <asp:ListItem selected="true">Item 1</asp:ListItem> 
    <asp:ListItem>Item 2</asp:ListItem> 
    <asp:ListItem>Item 3</asp:ListItem> 
    <asp:ListItem>Item 4</asp:ListItem> 
</asp:RadioButtonList> 
+0

我不能只使用一个,它们之间有内容。 – user3198448

相关问题