简体   繁体   English

RadioButtons CheckedChanged 事件

[英]RadioButtons CheckedChanged event

I have 20 radiobuttons on the page and I want to know which one of them was clicked.我在页面上有 20 个单选按钮,我想知道点击了其中的哪一个。

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);
    }
}

New Updated code.. NOTE: THE CODE DOESNT RELATE TO THE ABOVE CODE.新更新的代码.. 注意:代码与上述代码无关。

      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);
    }
}

How do i find out?我怎么知道?

With the parameter sender you have a direct reference to the event-source control.使用参数sender ,您可以直接引用事件源控件。

var rb = (RadioButton)sender;

If you want to trigger this event and the postback directly, you must set the RadioButton's AutoPostBack -Property to true .如果要直接触发此事件和回发,则必须将 RadioButton 的AutoPostBack -Property 设置为true

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

You could try the above.你可以试试上面的。

Update:更新:
To get all select radio buttons in PlaceHolder make sure the AutoPostBack is not set on the radio buttons.要获取 PlaceHolder 中的所有 select 单选按钮,请确保未在单选按钮上设置 AutoPostBack。 You dont need to add CheckChanged Event.您不需要添加 CheckChanged 事件。 "r.CheckedChanged += RadioButton1_CheckedChanged;" “r.CheckedChanged += RadioButton1_CheckedChanged;” <= remove. <= 删除。

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());
 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;  



        }
    }

You can try this.你可以试试这个。

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

Cast sender as RadioButton:将发件人投射为 RadioButton:

RadioButton r = sender as RadioButton;
if(r != null)
{
    //Do stuff
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM