Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 702
  • Last Modified:

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

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
feesu
Asked:
feesu
  • 3
  • 3
  • 2
  • +1
1 Solution
 
samtran0331Commented:
you need to loop through the items in the checkboxlist and check the "selected" property
0
 
samtran0331Commented:
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
 
Dustin HopkinsManaging MemberCommented:
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
Restore individual SQL databases with ease

Veeam Explorer for Microsoft SQL Server delivers an easy-to-use, wizard-driven interface for restoring your databases from a backup. No expert SQL background required. Web interface provides a complete view of all available SQL databases to simplify the recovery of lost database

 
dabratCommented:
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
 
Dustin HopkinsManaging MemberCommented:
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
 
samtran0331Commented:
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
 
dabratCommented:
Thank you dusion: and samtran0331, I appreciate the knowledge I learned today!!
0
 
feesuAuthor Commented:
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
 
dabratCommented:
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
 
feesuAuthor Commented:
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

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 3
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now