Adding new eventHandler in RadioButton CheckedChanges in dynamic table
If I am not mistaken, with dynamic controls in ASP.Net, you need to "rewire" their events on a postback. Remember that on a postback, dynamic controls are no longer there. You have to recreate them.
WISEMAN
Updated on June 04, 2022Comments
-
WISEMAN about 2 years
I'm trying to add another
eventHandler
toRadioButton
. This is the sample code (which is working):ASP.NET:
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> <asp:Button ID="Button1" runat="server" Text="Button" />
C#:
protected void Page_Load(object sender, EventArgs e) { RadioButton RB1 = new RadioButton(); RB1.ID = "1"; RB1.GroupName = "bla"; RB1.CheckedChanged += new EventHandler(CheckedChanged); RadioButton RB2 = new RadioButton(); RB2.ID = "2"; RB2.GroupName = "bla"; RB2.CheckedChanged += new EventHandler(CheckedChanged); PlaceHolder1.Controls.Add(RB1); PlaceHolder1.Controls.Add(RB2); } protected void CheckedChanged(object sender, EventArgs e) { Label1.Text = ((RadioButton)sender).ID; }
In my project I have dynamic creating of
RadioButtons
(the number of rows I get from database). The same addingeventHandler
does not work, but if I writeMyRadioButton.Load += new EventHandler(Another_method);
The
Another_method
will start, but inMyRadioButton.CheckedChanged += new EventHandler(Main_method);
the
Main_method
will not start if I choose one of theRadioButtons
. What is wrong?
@KevinP This is my code:
Table tb1 = new Table(); PlaceHolder1.Controls.Add(tb1); TableRow tr = new TableRow(); TableCell tc = new TableCell(); //adding the first row with title" tr.Cells.Add(tc); for (int i = 0; i < ((ArrayList)(result[0])).Count; i++) { tc = new TableCell(); Label example = new Label(); example.Text = ((columnsResultFromSqlClients)(i)).ToString(); tc.Controls.Add(example); tr.Cells.Add(tc); } tb1.Rows.Add(tr); //filling the table for (int i = 0; i < result.Count; i++) { tr = new TableRow(); tc = new TableCell(); //adding radio button RadioButton RB = new RadioButton(); RB.Attributes.Add("value", ((ArrayList)(result[i]))[0].ToString()); RB.GroupName = "for_selecting"; RB.ID = ((ArrayList)(result[i]))[0].ToString(); RB.CheckedChanged += new EventHandler(RB_CheckedChanged2); //RB.AutoPostBack = true; RB.Attributes.Add("AutoPostBack", "True"); tc.Controls.Add(RB); tr.Cells.Add(tc); //adding content for (int j = 0; j < ((ArrayList)(result[i])).Count; j++) { tc = new TableCell(); Label example = new Label(); example.Text = ((ArrayList)(result[i]))[j].ToString(); tc.Controls.Add(example); tr.Cells.Add(tc); } tb1.Rows.Add(tr); }
If I use
RB.AutoPostBack = true;
, I have no time to press the button to submit my choice, cause the page will reload when i click the one of the Radio Buttons. Also theRB_CheckedChanged2
code:protected void RB_CheckedChanged2(object sender, EventArgs e) { RadioButton tempRB = (RadioButton)sender; if (tempRB.Checked) { selected_id = tempRB.ID; } }
The
select_id
is astatic int
varible with standart value = "-1".