2011-06-30 7 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

その後、チェックボックスリストを使用することをお勧めします。 – Jethro

+0

残念なことに、私は気にしませんが、いつ制御するのですか?...最後のラジオボックスをクリックしてからイベントが発生します。リストとしてすべての文字列をコレクションに入れてから、すべてを印刷するように繰り返します。ラジオボタン1をクリックするとリストに入れることができます。ラジオボタン2をクリックするとリストにも追加できますか? –

2

パラメータsenderでは、イベントソースコントロールへの直接参照があります。

var rb = (RadioButton)sender; 

あなたが直接、このイベントとポストバックをトリガーしたい場合は、trueへのRadioButtonのAutoPostBack -Propertyを設定する必要があります。

+0

checkedchangeイベント火災..私は私はそれをチェックしたときにバック完全なポストを参照してくださいいけないん正確に? –

+0

'AutoPostback'を' true'に設定する必要があります。 –

+0

私は知っている、私は望んでいない...いつその火災は.. page_load..rightの後に –

0

これを試すことができます。

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

r.ID、彼はコントロール名を設定していません。 – Jethro

+0

@ジェトロ:ありがとう:) – Anuraj

+0

私はチェック..完全なポストバックはありません.. ..!?!?私はボタンをクリックすると、ポストバックがあります。そして、私はIDの値を取得します。私は右ですか? –

0

のRadioButtonとしてキャスト送信者:

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

完全なポストバック/を生成するボタンのクリックイベントの後にそのイベントが発生するかどうかを知ることができますか? –

関連する問題