Событие RadioButtons CheckedChanged - PullRequest
0 голосов
/ 30 июня 2011

У меня 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);
    }
}

Новый обновленный код.

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

Как мне узнать?

Ответы [ 5 ]

2 голосов
/ 30 июня 2011
var rad = (RadioButton)sendder;
Response.Write("RadioButton Id :" + rad.Id.ToString());

Вы можете попробовать выше.

Обновление:Чтобы получить все выбранные переключатели в PlaceHolder, убедитесь, что AutoPostBack не установлен на переключателях.Вам не нужно добавлять событие CheckChanged."r.CheckedChanged + = RadioButton1_CheckedChanged;"<= удалить. </p>

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());
2 голосов
/ 30 июня 2011

С параметром sender у вас есть прямая ссылка на элемент управления источником события.

var rb = (RadioButton)sender;

Если вы хотите запустить это событие и обратную передачу напрямую, вы должны установить RadioButton's AutoPostBack-Свойство до true.

1 голос
/ 30 июня 2011
 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 голосов
/ 30 июня 2011

Передача в виде кнопки RadioButton:

RadioButton r = sender as RadioButton;
if(r != null)
{
    //Do stuff
}
0 голосов
/ 30 июня 2011

Вы можете попробовать это.

RadioButton r = sender as RadioButton;
Response.Write(r.Id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...