Dear All
I am trying to create groupbox dynamically and these GB will create on selection on checkbox.
Means I have 5 check boxes now if I select 1st CB then 1 GB with some other dynamic checkbox shall be created, if I select 3rd check then another GB shall be created with few more other checkboxes.
For this I am trying with this code whee I am able to create dynamic checkboxes for fixed groupbox which is already created at design time.
My scenario is - 5 Branches have multiple batches. Now user will choose branch from dynamically checkboxes and on that basis btaches will be displayed in groupbox for each branch.
Branch1 Branch2 Branch3 Branch4 Branch5 if user select 3rd and 5th branch then GB1 will show Branch3's Batches and GB2 shall show Branch5's Batches
Here is the code -
//Check Box for Branches
private void RO_SelectedIndexChanged(object sender, EventArgs e)
{
groupBox1.Controls.Clear();
String m = RO.SelectedItem.ToString();
Console.WriteLine(m);
aCommand2 = new OleDbCommand("select * from branch_tbl,region_tbl where branch_tbl.region_id=region_tbl.region_id and region_tbl.region_name LIKE '"+m +"'", main_connection);
aAdapter2 = new OleDbDataAdapter(aCommand2);
ds2 = new DataSet();
aAdapter2.Fill(ds2, "app_info");
ds2.Tables[0].Constraints.Add("pk_bno", ds2.Tables[0].Columns[0], true);
int bran_count = ds2.Tables[0].Rows.Count;
Console.WriteLine(bran_count);
checkBox = new System.Windows.Forms.CheckBox[bran_count];
for (int i = 0; i < bran_count; ++i)
{
checkBox[i] = new CheckBox();
checkBox[i].Name = "radio" + Convert.ToString(i);
checkBox[i].Text = ds2.Tables[0].Rows[i][2].ToString();
checkBox[i].Location = new System.Drawing.Point(125 * i, 15);
groupBox1.Controls.Add(checkBox[i]);
checkBox[i].CheckStateChanged += new System.EventHandler(CheckBoxCheckedChanged);
}
}
int count = 1;
int position = 1;
//Code for handling event when branch check box is selected or unselected
private void CheckBoxCheckedChanged(object sender, EventArgs e)
{
CheckBox c = (CheckBox)sender;
//Label myLabel;
String str = null;
if (c.Checked == true)
{
str = c.Text;
aCommand3 = new OleDbCommand("select * from batch_tbl where batch_branch LIKE '" + str + "'", main_connection);
aAdapter3 = new OleDbDataAdapter(aCommand3);
ds3 = new DataSet();
aAdapter3.Fill(ds3, "app_info");
ds3.Tables[0].Constraints.Add("pk_bno", ds3.Tables[0].Columns[0], true);
int batch_count = ds3.Tables[0].Rows.Count;
//filling the groupbox with batch code by generating dynamic checkboxes
for (int i = 0; i < batch_count; ++i)
{
checkBox[i] = new CheckBox();
checkBox[i].Name = "check" + Convert.ToString(i);
checkBox[i].Text = ds3.Tables[0].Rows[i][1].ToString();
Console.WriteLine(checkBox[i].Text);
checkBox[i].Location = new System.Drawing.Point(104*position, 30);
groupBox2.Text = c.Text;
groupBox2.Controls.Add(checkBox[i]);
position++;
count++;
}
}
else
{
count--;
this.Controls.RemoveByKey("lbl" + c.Name);
this.Update();
}
}
This code very fine but I don't know how many Branch CB will use select, so how can I put GB for each selected branch at desig time, for his I need to genrated GB at runtime on selection of Branch CheckBoxes.