2014-01-15 102 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

相關問題