?
Solved

ASP.NET 2005, IE 6 - CheckBox List - SelectedIndex Property Doesn't Return The Actually Selected Itme!

Posted on 2007-12-03
10
Medium Priority
?
698 Views
Last Modified: 2013-11-26
Experts,
I have got a check box list that has 5 items. If I uncheck the 3rd item, in my code, I get the selected index / selected text properties of the first item and not the selected one (3rd item)

How do I capture the unchecked item?

0
Comment
Question by:feesu
[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
  • 3
  • 3
  • 2
  • +1
10 Comments
 
LVL 37

Expert Comment

by:samtran0331
ID: 20395426
you need to loop through the items in the checkboxlist and check the "selected" property
0
 
LVL 37

Expert Comment

by:samtran0331
ID: 20395457
like:
        For Each item As ListItem In CheckBoxList1.Items
            If item.Selected Then
                Response.Write("Selected text: " & item.Text & ", selected value: " & item.Value & "<br />")
            Else
                Response.Write("Not selected text: " & item.Text & ", not selected value: " & item.Value & "<br />")
            End If
        Next

Open in new window

0
 
LVL 14

Expert Comment

by:Dustin Hopkins
ID: 20395468
In asp.net vb it will look something like this:
Protected Sub CheckBoxList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBoxList1.SelectedIndexChanged
        Dim c As ListItem
        For Each c In CheckBoxList1.Items
            If c.Selected = True Then
                Response.Write(c.Value)
            End If
        Next
    End Sub

Open in new window

0
A new era in Cloud training has arrived.

A day that will go down in Cloud history.. But are you ready for it? Will you accept this Cloud challenge?

 
LVL 1

Expert Comment

by:dabrat
ID: 20395550
Hello, just for my own knowledge, how would you do the above code examples in C#?

I know it is not required I am just curious.  Thanks~
0
 
LVL 14

Expert Comment

by:Dustin Hopkins
ID: 20395578
The one on top is Mine and the one on the bottom is samtran's

//Mine
protected void CheckBoxList1_SelectedIndexChanged(object sender, System.EventArgs e) 
{ 
    ListItem c; 
    foreach ( c in CheckBoxList1.Items) { 
        if (c.Selected == true) { 
            Response.Write(c.Value); 
        } 
    } 
} 
 
//Samtran's
 
 
{ 
    foreach (ListItem item in CheckBoxList1.Items) { 
        if (item.Selected) { 
            Response.Write("Selected text: " + item.Text + ", selected value: " + item.Value + "<br />"); 
        } 
        else { 
            Response.Write("Not selected text: " + item.Text + ", not selected value: " + item.Value + "<br />"); 
        } 
    } 
} 

Open in new window

0
 
LVL 37

Expert Comment

by:samtran0331
ID: 20395639
For future reference, there are tools available to convert VB.Net to C# and back.
http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx
0
 
LVL 1

Expert Comment

by:dabrat
ID: 20395718
Thank you dusion: and samtran0331, I appreciate the knowledge I learned today!!
0
 

Author Comment

by:feesu
ID: 20398288
Experts,
I did the following but got the below error:

        For Each item As ListItem In Me.chkSelected.Items
            If Not item.Selected Then
                Me.chkSelected.Items.Remove(item)
            End If
        Next

Error:

System.InvalidOperationException was unhandled by user code
  Message="Collection was modified; enumeration operation may not execute."
  Source="mscorlib"
  StackTrace:
       at System.Collections.ArrayList.ArrayListEnumeratorSimple.MoveNext()
       at FAQ_Question_Edit.chkSelected_SelectedIndexChanged(Object sender, EventArgs e) in C:\Elvis\wwwroot\NIC\DesktopModules\IT\FAQ_Question_Edit.aspx.vb:line 114
       at System.Web.UI.WebControls.ListControl.OnSelectedIndexChanged(EventArgs e)
       at System.Web.UI.WebControls.CheckBoxList.RaisePostDataChangedEvent()
       at System.Web.UI.WebControls.CheckBoxList.System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent()
       at System.Web.UI.Page.RaiseChangedEvents()
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
0
 
LVL 1

Accepted Solution

by:
dabrat earned 375 total points
ID: 20398574
Try this instead -

For i As Integer = 0 To chkSelected.Items.Count - 1
     ' Remove any not selected item...
    Dim listItem As ListItem = chkSelected.Items(i)
   
   If Not listItem.Selected Then
         chkSelected.Items.Remove(listItem)
    End If
 Next

That works for me, not sure why it doesn't work in a For Each
0
 

Author Comment

by:feesu
ID: 20401167
Hi dabrat,
You need to add i = i + 1 inside your If condition to avoid an error when an item is removed.
0

Featured Post

Interactive Way of Training for the AWS CSA Exam

An interactive way of learning that will help you visualize core concepts so that you can be more effective when taking your AWS certification exam.  Built for students by a student to help them understand the concepts that they are being taught.

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 shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
In this brief tutorial Pawel from AdRem Software explains how you can quickly find out which services are running on your network, or what are the IP addresses of servers responsible for each service. Software used is freeware NetCrunch Tools (https…
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…
Suggested Courses

801 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