Solved

dynamically generated checkboxes?

Posted on 2008-10-09
11
380 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Salesforce Has Never Been Easier

Improve and reinforce salesforce training & adoption using WalkMe's digital adoption platform. Start saving on costly employee training by creating fast intuitive Walk-Thrus for Salesforce. Claim your Free Account Now

 
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

Visualize your virtual and backup environments

Create well-organized and polished visualizations of your virtual and backup environments when planning VMware vSphere, Microsoft Hyper-V or Veeam deployments. It helps you to gain better visibility and valuable business insights.

Question has a verified solution.

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

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:…
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
Michael from AdRem Software outlines event notifications and Automatic Corrective Actions in network monitoring. Automatic Corrective Actions are scripts, which can automatically run upon discovery of a certain undesirable condition in your network.…
This tutorial will teach you the special effect of super speed similar to the fictional character Wally West aka "The Flash" After Shake : http://www.videocopilot.net/presets/after_shake/ All lightning effects with instructions : http://www.mediaf…

617 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