Solved

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

Posted on 2007-12-03
10
694 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
SharePoint Admin?

Enable Your Employees To Focus On The Core With Intuitive Onscreen Guidance That is With You At The Moment of Need.

 
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

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

A quick way to get a menu to work on our website, is using the Menu control and assign it to a web.sitemap using SiteMapDataSource. Example of web.sitemap file: (CODE) Sample code to add to the page menu: (CODE) Running the application, we wi…
Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
This is a high-level webinar that covers the history of enterprise open source database use. It addresses both the advantages companies see in using open source database technologies, as well as the fears and reservations they might have. In this…
Monitoring a network: why having a policy is the best policy? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the enormous benefits of having a policy-based approach when monitoring medium and large networks. Software utilized in this v…

695 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