Solved

dynamically generated checkboxes?

Posted on 2008-10-09
11
376 Views
Last Modified: 2013-11-07
Hello there,

Currently I am working with the project which needs dynamically generated checkboxes. I have generated dynamic checkboxes but I am facing problem with getting the value of the selected checkboxes. Could you explain how to get the selected value for a dynamically generated checkboxes?

Below is my current code:








   

       ##### dynamically generated checkboxes:

            for (int i = 1; i < 4; i++)
            {
                CheckBoxList _checkbox = new CheckBoxList();
                _checkbox.ID = "myCheckbox" + i.ToString();

                _checkbox.Items.Add("first" + i.ToString());
                _checkbox.Items.Add("second" + i.ToString());

                if (i == 1)
                {
                    PlaceHolder1.Controls.Add(_checkbox);
                }

                if (i == 2)
                {
                    PlaceHolder2.Controls.Add(_checkbox);
                }

                if (i == 3)
                {
                    PlaceHolder3.Controls.Add(_checkbox);
                }
            }
           

    ### ASPX page
           <tr>
             <td >
                    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
                </td>
                <td>
                    <asp:PlaceHolder ID="PlaceHolder2" runat="server"></asp:PlaceHolder>
                </td>
                <td >
                    <asp:PlaceHolder ID="PlaceHolder3" runat="server"></asp:PlaceHolder>
                </td>
            </tr>
0
Comment
Question by:bojeff30
  • 4
  • 4
  • 2
  • +1
11 Comments
 
LVL 18

Expert Comment

by:Priest04
ID: 22682754
Tell me, do you want to get a value for a particular item in a particular CheckBoxList? Or you want some general information how to do it? To loop though all items, you can use this code
Label1.Text = ""; // Label control is just to show the results
 
foreach (Control ctr in PlaceHolder1.Controls)
{
    if (ctr is CheckBoxList)
    {
        foreach (ListItem item in ((CheckBoxList)ctr).Items)
        {
            Label1.Text += ctr.ID + "." + item.Text + "=" + item.Selected.ToString() + "<br />";
        }
    }
}

Open in new window

0
 
LVL 18

Expert Comment

by:Priest04
ID: 22682819
And here is how to get it by name
Label1.Text = "";
 
CheckBoxList checkBoxList = PlaceHolder1.FindControl("myCheckbox2") as CheckBoxList;
 
if (checkBoxList != null)
{
    ListItem item = checkBoxList.Items.FindByText("first2");
    if (item != null)
        Label1.Text = item.Selected.ToString();
}

Open in new window

0
 
LVL 5

Expert Comment

by:harwantgrewal
ID: 22683330
Hi bojeff30
I don't know exactly what is the need of Dynamic Checkbox but the way you are doing is not good. As you are saying you are adding Dynamic Checkbox to a fixed placeholder? It dosen't make sense to me could you explain what is the reason to have 3 place holder and then put one dynamic checkbox in each placeholder?

Thanks
Harry
0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 
LVL 26

Expert Comment

by:Anurag Thakur
ID: 22685101
i agree with harwantgrewal as to why do u need PlaceHolder control to add a single check box in all the place holders at run time

Create your check boxes at design time
0
 
LVL 5

Expert Comment

by:harwantgrewal
ID: 22685195
Hi raqi0017
Yeah thats what I was trying to understand so that we can help bojeff30 in a right way rather just answering to his problem :)

Thanks
Harry
0
 

Author Comment

by:bojeff30
ID: 22688650
 Sorry for the miscommunication. I tried to simplify the question, but I think I made it more complicated. Let me start over. My initial code is listed below.
I need to display a list of languages supported for(lets say) different movies. I need the languages to display in a checkboxlist to allow user selection. The selected languages needs to be moved to a listbox once the user click a submit button.

I have two issues.
1.) Im unable to get the selected value from the checkboxlist and move it to the list box.
2.) Im unable to get the desire table format unless I use a placeholders or a panel control. The table format must remain in the table format listed below. Let me know if there is a better way to achieve this task.


Table format
------------------------------------------------      
|   Movie 1    | Movie 2      | Movie3         |
------------------------------------------------
|Checkbo1  | checkbox2  | checkbox3       |
| x English   |  X English    |  x English       |
| x French   |  X spanish   |  X gGerman      |
| x Spanish |                      |            |
------------------------------------------------


my Code:

protected void Button1_Click(object sender, EventArgs e)
    {
        for (int i = 1; i < 4; i++)
        {
           
            Label _label = new Label();
            _label.ID = "lbUSA" + i.ToString();

            //-------------------------------------------
            CheckBoxList _checkbox = new CheckBoxList();
            _checkbox.ID = "cblDAO" + i.ToString();
            _checkbox.DataTextField = "Language_Description";
            _checkbox.DataValueField = "Language_Name";          
                   
           
                //Connect to DataBase
                string connectionString =
                    WebConfigurationManager.ConnectionStrings["MyDBTOOL"].ConnectionString;
                SqlConnection myConnection = new SqlConnection(connectionString);


                //SqlDataReader ReadMyData = new SqlDataReader();
                //Stored Procedure Command

                SqlCommand command = new SqlCommand("sp_Movie_Language_Lookup", myConnection);

                command.CommandType = CommandType.StoredProcedure;
                myConnection.Open();

                //Add Stored Procedures Parameters
                command.Parameters.Add(new SqlParameter("@TypeID", SqlDbType.Int));
                command.Parameters.Add(new SqlParameter("@RegionID", SqlDbType.Int));
                command.Parameters.Add(new SqlParameter("@MovieID", SqlDbType.Int));




                //Set Value for Stored Procedure Variable
                command.Parameters["@LobID"].Value = 1;
                command.Parameters["@RegionID"].Value = 4;
                command.Parameters["@MovieID"].Value = i;




                SqlDataReader myReader = command.ExecuteReader();

                //While the data reader iterates through the rows, populate the CheckBoxList.
               

                if (myReader.HasRows)
                {
                   

                    //populate Checkboxist
                    while (myReader.Read())
                    {
                        _label.Text = myReader["MOVIE_Name"].ToString();
                        _checkbox.DataSource = myReader;
                        _checkbox.DataBind();

                    }
                }

                //Housekeeping - Close the connection
                myReader.Close();
                myConnection.Close();



           


            //######################################


            if (i == 1)
            {
                Panel1.Controls.Add(_label);              
                PlaceHolder1.Controls.Add(_checkbox);
            }

            if (i == 2)
            {
                Panel2.Controls.Add(_label);
                PlaceHolder2.Controls.Add(_checkbox);
                            }

            if (i == 3)
            {
                Panel3.Controls.Add(_label);
                PlaceHolder3.Controls.Add(_checkbox);
                            }




        }
    }
0
 
LVL 18

Accepted Solution

by:
Priest04 earned 500 total points
ID: 22689047
First, no need for opening/closing connection every time you loop. it degrades performace. Open connection once, and close it after you have done retrieving data.

Have you looked at the code I have provided. There you have an example how to get selected value.
0
 

Author Comment

by:bojeff30
ID: 22689989
Priest04: I'm  trying to test your code, but when i click the submit button the dynamic checkboxlists are gone. The code to create the dynamic checkboxlist is under the load method(see below). why is the postback removing the created controls?

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
0
 

Author Comment

by:bojeff30
ID: 22690466
Priest04:

Disregard the last posting. Your code is working, but it is getting all of the values. How do I get only the checked value from the checkbox.

Label1.Text = ""; // Label control is just to show the results
 
foreach (Control ctr in PlaceHolder1.Controls)
{
    if (ctr is CheckBoxList)
    {
        foreach (ListItem item in ((CheckBoxList)ctr).Items)
        {
            Label1.Text += ctr.ID + "." + item.Text + "=" + item.Selected.ToString() + "<br />";

        }
    }
}
0
 

Author Comment

by:bojeff30
ID: 22690644
I change the code. I able to get what i was looking for. Thanks for all your help.


 
0
 
LVL 18

Expert Comment

by:Priest04
ID: 22691070
You are welcome.
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
This video shows how to use Hyena, from SystemTools Software, to bulk import 100 user accounts from an external text file. View in 1080p for best video quality.

816 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now