2011-06-30 118 views
0

我在頁面上有20個單選按鈕,我想知道他們中的哪一個被點擊。RadioButtons CheckedChanged事件

protected void Page_Load(object sender, EventArgs e) 
{ 
    Button newBTN = new Button(); 

    newBTN.Text = "Button 1"; 
    PlaceHolder1.Controls.Add(newBTN); 
    for (int i = 0; i < 20; i++) 
    { 
     RadioButton r = new RadioButton(); 
     r.ID = i.ToString(); 
     r.CheckedChanged += RadioButton1_CheckedChanged; 
     PlaceHolder1.Controls.Add(r); 
    } 
} 

新更新的代碼..注意:該代碼與上述代碼相關。

 public List<int> ThreadID2Treat { get { return ViewState["Checked"] == null ? null : (List<int>)ViewState["Checked"]; } set { ViewState["Checked"] = value; } } 
protected void CheckBox1_CheckedChanged(object sender, EventArgs e) 

{

var rad = (CheckBox)sender; 
int threadID = int.Parse(rad.ID.ToString()); 
ThreadID2Treat.Add(threadID); 

}

public void DeleteButton_Clicked(object sender, EventArgs e) 
{ 
    foreach (var item in ThreadID2Treat) 
    { 
     UsefulStaticMethods.DeleteThreads(item); 
    } 
} 

我怎麼發現的?

回答

2
var rad = (RadioButton)sendder; 
Response.Write("RadioButton Id :" + rad.Id.ToString()); 

你可以試試以上。

更新:
要獲取PlaceHolder中的所有選擇單選按鈕,請確保單選按鈕上未設置AutoPostBack。你不需要添加CheckChanged事件。 「r.CheckedChanged + = RadioButton1_CheckedChanged;」 < =刪除。

StringBuilder stringBuilder = new StringBuilder(); 
    foreach (var control in placeHolder1.Controls) 
    { 
     var rad = control as RadioButton; 
     if (rad != null) 
     { 
      if (rad.Checked) 
       stringBuilder.AppendLine(String.Format("Radion Button Checked : {0}", rad.ID)); 
     } 
    } 

    Response.Write(stringBuilder.ToString()); 
+0

我完全檢查了其中的幾個,說他們中的4個......我怎麼才能將它們全部寫在屏幕上? –

+0

我建議你使用checkboxlist。 – Jethro

+0

不幸的是,我不能,什麼時候該控制火災?...最後一個radiobox我點擊..然後它的事件火災..我可以把所有的字符串集合爲一個列表,然後遍歷它們打印所有..所以如果我點擊單選按鈕1,我可以把它放到列表中,如果我單擊單選按鈕2,我可以將它添加到列表嗎? –

2

使用參數sender您可以直接引用事件源控件。

var rb = (RadioButton)sender; 

如果您想直接觸發該事件,並回傳,你必須設置單選按鈕的AutoPostBack,物業給true

+0

究竟什麼時候checkedchange事件火..我沒有看到全文後回來時,我檢查一下嗎? –

+0

您必須將'AutoPostback'設置爲'true'。 –

+0

我知道,我不想......什麼時候該事件觸發.. page_load之後..直接 –

0

你可以試試這個。

RadioButton r = sender as RadioButton; 
Response.Write(r.Id); 
+0

r.ID,他沒有設置控件名稱。 – Jethro

+0

@Jethro:謝謝:) – Anuraj

+0

當我檢查時沒有完整的回發..正確..!?!?當我點擊按鈕,然後有回傳..然後我得到的ID..AM的價值,我是嗎? –

0

演員發件人爲單選按鈕:

RadioButton r = sender as RadioButton; 
if(r != null) 
{ 
    //Do stuff 
} 
1
protected void RadioButton1_CheckedChanged(object sender, EventArgs e) 
    { 
     if (sender is RadioButton) 
     { 

      RadioButton radioButton = (RadioButton)sender; 
      //Code to use radioButton's properties to do something useful. 
      // get the radio button by its ID 
      string id = radioButton.ID; 



     } 
    } 
+0

該事件是否在Page_Load之前或之後觸發? –

+1

在Page_Load之後。 – Saurabh

+0

我可以知道,如果該事件觸發按鈕單擊事件,生成完整的回發/? –

相關問題