Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

dynamically generated checkboxes?

Posted on 2008-10-09
11
Medium Priority
?
384 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
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
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 2000 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

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
This Micro Tutorial will teach you how to add a cinematic look to any film or video out there. There are very few simple steps that you will follow to do so. This will be demonstrated using Adobe Premiere Pro CS6.
We’ve all felt that sense of false security before—locking down external access to a database or component and feeling like we’ve done all we need to do to secure company data. But that feeling is fleeting. Attacks these days can happen in many w…
Suggested Courses

916 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