Solved

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

Posted on 2007-12-03
10
679 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
  • 3
  • 3
  • 2
  • +1
10 Comments
 
LVL 37

Expert Comment

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

Expert Comment

by:samtran0331
Comment Utility
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
Comment Utility
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
 
LVL 1

Expert Comment

by:dabrat
Comment Utility
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
Comment Utility
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
Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

 
LVL 37

Expert Comment

by:samtran0331
Comment Utility
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
Comment Utility
Thank you dusion: and samtran0331, I appreciate the knowledge I learned today!!
0
 

Author Comment

by:feesu
Comment Utility
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 125 total points
Comment Utility
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
Comment Utility
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

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

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…
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:…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

743 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

15 Experts available now in Live!

Get 1:1 Help Now