I am creating a web page with dynamic controls and want to add events to the controls.
Specifically, I have labels and checkboxes on my web page and want to add an event to review the status of the checkboxes.
In the event, I want to check to see if the checkbox that was just changed is checked and if so, make sure the other checkbox is unchecked and if the other checkbox is checked, reset the other checkbox so that it is unchecked - the check boxes are mutually exclusive.
Here is a sample of what I am trying to do:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void ClickMe(object sender, EventArgs e)
{
//I want to check to see if the checkbox that was just changed is checked
//and if so, make sure the other checkbox is unchecked
//and if the other checkbox is checked,
//reset the other checkbox so that it is unchecked
//- the check boxes are mutually exclusive
// I am just changing the label text to verify it the event is firing
Label1.Text = "Changed DataBind";
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body> <script runat="server">
int count = 1;
int r = 0;
public void IterateThroughChildren(Control parent)
{
foreach (Control c in parent.Controls)
{
if (c.GetType().ToString().Equals("System.Web.UI.WebControls.Label") &&
c.ID == null)
{
((Label)c).ID = "lbl" + Convert.ToString(r);
((Label)c).Enabled = true;
((Label)c).Visible = true;
((Label)c).Text = "Label Information " + Convert.ToString(r) ;
r++;
}
if (c.GetType().ToString().Equals("System.Web.UI.WebControls.CheckBox") &&
c.ID == null)
{
((CheckBox)c).ID = "cbx" + Convert.ToString(r);
((CheckBox)c).TabIndex = short.Parse(Convert.ToString(r));
((CheckBox)c).CheckedChanged += new System.EventHandler(this.ClickMe);
}
count++;
if (c.Controls.Count > 0)
{
IterateThroughChildren(c);
}
}
}
public void LoadData(object sender, EventArgs e)
{
SetupHere.Controls.Add(new CheckBox());
SetupHere.Controls.Add(new Label());
SetupHere.Controls.Add(new CheckBox());
SetupHere.Controls.Add(new Label());
SetupHere.Controls.Add(new LiteralControl("<br>"));
SetupHere.Controls.Add(new LiteralControl("<br>"));
SetupHere.Controls.Add(new LiteralControl("<br>"));
SetupHere.Controls.Add(new LiteralControl("<br>"));
IterateThroughChildren(this);
}
</script>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:Label ID="Label1" runat="server" Text="First Pass" Visible="true" OnLoad="LoadData"></asp:Label>
<br />
<br />
<asp:PlaceHolder ID="SetupHere" runat="server" ></asp:PlaceHolder>
</div>
</form>
</body>
</html>
Any help would be appreciated.
Thank you.