Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17


Checkboxlist - set checked status from database

Posted on 2006-11-07
Medium Priority
Last Modified: 2009-07-29
I have a checkboxlist bound to an object data source in a VB ASP.NET 2.0 environment.

My object datasource returns a three column sqlDataReader with the following columns: "TagName", "TagID", "Selected". The "Selected" column is boolean. I set the "DataTextField" = "TagName" and the "DataValueField" = "TagID". Unfortunately there is no "DataCheckedField" property to set the selected status of the check box to the value from the "Selected" column.

When I load the checkboxlist I want the items for which  the "Selected" field from the database equals "True" to be selected in the checkboxlist. What is the easiest way to do this? If the answer involves setting it with code which it probably does, please use VB.

Note: I have no problem writing back the user's selections to the database.
Question by:glebn
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
  • 3
  • 2
LVL 12

Expert Comment

ID: 17896337
In page load

for (int i = 0; i < CheckBoxList1.Items.Count; i++)
            CheckBoxList1.Items[i].Selected = true;

LVL 12

Assisted Solution

renjurdevan earned 400 total points
ID: 17896345
i mean loop thru reader and set "DataCheckedField"

CheckBoxList1.Items[i].Selected =   //convert to boolean and set salData("DataCheckedField")

Author Comment

ID: 17903718
Thanks for responding Renju, but I'm sorry your comments didn't answer my question. Your second comment was too vague and it didn't use VB. Telling me to loop through and set the box tells me nothing about how to do this most effectively. Again, thanks for responding.

I solved my own problem. My fundamental mistake was trying to use one datasource to build the list and set the values. Being an ASP.NET newbie I did this because I expected to be able to use the boolean "Selected" field to set the check box "checked" status which I now see that I can't. Instead, I used a datasource to populate the CheckboxList which included all possible rows ignoring the "Selected" field. I then created a different data source pulling only the rows for which selected was true. This second data source I used for the sqlReader in the code below to loop through the checkboxlist items during page load to check the appropriate items.

If sqlReader.HasRows Then
      Do While sqlReader.Read()
            For Each li As ListItem In Me.chkblCategories.Items
                  If li.Value = sqlReader("TagID") Then
                        li.Selected = True
                  End If
        ' If sqlReader doesn't have rows then no items should be selected.
      For Each li As ListItem In Me.chkblCategories.Items
            li.Selected = False
End If
sqlreader = Nothing

If anybody has suggestions for improving this or alternate approaches to the problem I would be glad to award the points.

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

LVL 12

Accepted Solution

sandip132 earned 1600 total points
ID: 17904845
Do you mean by like this? :

If sqlReader.HasRows Then
    Do While sqlReader.Read()
     While i < MyList.Items.Count
      Dim chklst As CheckBoxList = CType(MyList.Items(i).FindControl("CheckBoxList1"), CheckBoxList)
      quantity = Int32.Parse(quantityTxt.Text)
      If chklst .value = sqlReader("TagID") Then
        chklst .Checked = True Then
      End If
    End While
End IF


Author Comment

ID: 17920010
Both work fine. I prefer the For-Next loop because it is easier to read--don't know which method would be faster but the number of checkboxes are so small that it doesn't matter.

P.S. My Else clause was written a little to late at night ;) -- as written it doesn't clear checkboxes properly in some cases. I fixed it by removing the Else clause entirely and putting the clear all checkboxes code before the initial If-Then.

Thanks for the comment.


Author Comment

ID: 17933945
I actually decided to use my solution posted above, but appreciate both responses which were correct solutions. I gave sandip132 most of the points because s/he gave a detailed solution with VB code.

Featured Post

[Webinar] Lessons on Recovering from Petya

Skyport is working hard to help customers recover from recent attacks, like the Petya worm. This work has brought to light some important lessons. New malware attacks like this can take down your entire environment. Learn from others mistakes on how to prevent Petya like worms.

Question has a verified solution.

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

In .NET 2.0, Microsoft introduced the Web Site.  This was the default way to create a web Project in Visual Studio 2005.  In Visual Studio 2008, the Web Application has been restored as the default web Project in Visual Studio/.NET 3.x The Web Si…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA:…
Want to learn how to record your desktop screen without having to use an outside camera. Click on this video and learn how to use the cool google extension called "Screencastify"! Step 1: Open a new google tab Step 2: Go to the left hand upper corn…
Suggested Courses

722 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