Solved

dynamically generated checkboxes?

Posted on 2008-10-09
11
374 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
 
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
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 

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

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
C# Export DataGridView 4 39
Wpf develop 5 32
Expando 4 34
ASP.NET Web API or ASP.NET Core MVC? 3 19
This article describes relatively difficult and non-obvious issues that are likely to arise when creating COM class in Visual Studio and deploying it by professional MSI-authoring tools. It is assumed that the reader is already familiar with the cla…
Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

705 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

19 Experts available now in Live!

Get 1:1 Help Now