Solved

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

Posted on 2007-12-03
10
687 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
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
Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

 
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 125 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

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
mail.To.Add 5 28
RLDC Reporting in Visual studio 11 17
C# LINQ ForEach() question 6 29
how to check group permission on a file located on a remote server ? 3 14
Introduction This article shows how to use the open source plupload control to upload multiple images. The images are resized on the client side before uploading and the upload is done in chunks. Background I had to provide a way for user…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

825 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