user3215839
user3215839

Reputation: 35

Dynamic created radio buttons wont execute event on click

I have a button named "Add Radio Button" in my form, and a text box named TexBox1.

I've written code that when I click the "Add Radio Button", it generates a Radio button; it's own name:

c#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ViewState["Counter"] = 0;
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i <= Convert.ToInt32(ViewState["Counter"]); i++)
        {
            HtmlGenericControl div = new HtmlGenericControl("div");
            RadioButton rb = new RadioButton();
            rb.ID = i.ToString();
            rb.Text = "Button" + i.ToString();
            rb.GroupName = "RB";
            rb.CheckedChanged += radioButton_CheckedChanged;

            div.Controls.Add(rb);
            Panel1.Controls.Add(div);
        }

        ViewState["Counter"] = Convert.ToInt32(ViewState["Counter"]) + 1;
    }
    private void radioButton_CheckedChanged(object sender, EventArgs e)
    {
        RadioButton btn = sender as RadioButton;
        TextBox1.Text = btn.Text;
    }

}

ASP

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:Panel ID="Panel1" runat="server">
        </asp:Panel>
        <br />
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br />
        <br />
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Add RadioButton" />

    </div>
    </form>
</body>
</html>

The problem is that after several radio buttons being created, I want the program to work as if each of them is checked, the TextBox1.Text gets the radio button's text string (the name of button) but the function radioButton_CheckedChanged doesn't execute.

Upvotes: 2

Views: 2172

Answers (3)

PlaceUserNameHere
PlaceUserNameHere

Reputation: 126

You missed this I think

rb.CheckedChanged +=new EventHandler(rb_CheckedChanged);

Check my comments below also

Upvotes: 2

Sebastian 506563
Sebastian 506563

Reputation: 7228

this is how its should be imo:

protected void Button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i <= Convert.ToInt32(ViewState["Counter"]); i++)
        {
            HtmlGenericControl div = new HtmlGenericControl("div");
            RadioButton rb = new RadioButton();
            rb.ID = i.ToString();
            rb.Text = "Button" + i.ToString();
            rb.GroupName = "RB";
            rb.CheckedChanged += +=new EventHandler(radioButton_CheckedChanged);

            div.Controls.Add(rb);
            Panel1.Controls.Add(div);
        }

        ViewState["Counter"] = Convert.ToInt32(ViewState["Counter"]) + 1;
    }
    private void radioButton_CheckedChanged(object sender, EventArgs e)
    {
        RadioButton btn = sender as RadioButton;
        TextBox1.Text = btn.Text;
    }

Upvotes: 0

bashkan
bashkan

Reputation: 464

you should set as true to Autopostback property

 rb.AutoPostBack = true;

Upvotes: 0

Related Questions