Asp.net

如何在中繼器項中找到選中的 RadioButton?

  • May 5, 2011

我在 ASPX 頁面上有一個 Repeater 控制項,定義如下:

<asp:Repeater ID="answerVariantRepeater" runat="server"
   onitemdatabound="answerVariantRepeater_ItemDataBound">
   <ItemTemplate>
       <asp:RadioButton ID="answerVariantRadioButton" runat="server"
           GroupName="answerVariants" 
           Text='<%# DataBinder.Eval(Container.DataItem, "Text")%>'"/>
   </ItemTemplate>
</asp:Repeater>

為了允許及時選擇一個單選按鈕,我使用了本文的技巧。

但是現在送出表單時,我想確定選中了哪個單選按鈕。

我可以這樣做:

RadioButton checkedButton = null;

foreach (RepeaterItem item in answerVariantRepeater.Items)
{
   RadioButton control=(RadioButton)item.FindControl("answerVariantRadioButton");
   if (control.Checked)
   {
       checkedButton = control;
       break;
   }
}

但希望它可以以某種方式更簡單地完成(可能通過 LINQ to 對象)。

由於您已經在使用 javascript 來處理客戶端上的單選按鈕點擊事件,因此您可以同時使用所選值更新隱藏欄位。

然後,您的伺服器程式碼將只訪問隱藏欄位中的選定值。

您總是可以使用Request.Form來獲取送出的單選按鈕:

var value = Request.Form["answerVariants"];

我認為送出的值預設為<asp:RadioButton />所選的 id,但您始終可以添加 value 屬性 - 即使它不是正式的<asp:RadioButton />屬性 - 然後這將是送出的值:

<asp:RadioButton ID="answerVariantRadioButton" runat="server"
   GroupName="answerVariants" 
   Text='<%# DataBinder.Eval(Container.DataItem, "Text")%>'"
   value='<%# DataBinder.Eval(Container.DataItem, "SomethingToUseAsTheValue")%>' />

引用自:https://stackoverflow.com/questions/290018