Solved

How do I find the index of a selected item in a listview control

Posted on 2010-09-15
14
602 Views
Last Modified: 2013-11-26
Greetings experts,

I'm a little new to this and don't yet fully understand the listview control, but here's what I'm trying to do:

I have a listview control with which I'm using templates (a couple of labels and an image button) in an image gallery.  The datapager for the listview has a page size of 15 and there are several pages of items.  When a user clicks an image button, I need to determine the index of that selected item within the listview collection so that I may, at some later point, return the listview control to the page that contains that item.  For instance, a user clicks an image button (thumbnail image) and the page navigates away to show a full-sized image.  When the user returns to the page, I want to reset the listview to the page the user was on before navigating away.

I tried to capture the selected index with:

dim idx as Integer
 idx = ListView1.SelectedIndex

However, this returns a value of -1 regardless of the item selected.  Please help this dumb guy figure this out. :)
0
Comment
Question by:bham3dman
  • 5
  • 4
  • 3
  • +1
14 Comments
 
LVL 7

Expert Comment

by:klakkas
ID: 33683272
You could keep the Index of each imagebutton in the tag field, save it when the user clicks and use it when you return to this page.



0
 
LVL 7

Expert Comment

by:klakkas
ID: 33683309
Further, if the image button does not result in a postback, you could store the index in the Query String.

If for example clicking on an imagebutton would go to http://yoursite/LargeImage.aspx?ShowImage=me.png,
add
'&LVSelIndex=[the index]' for each imagebutton
0
 
LVL 18

Expert Comment

by:Anil Golamari
ID: 33683377
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim i As Integer
        i = ListBox1.SelectedIndex.ToString()
        Label1.Text = i
   End Sub

this should work.  Add .tostring()
0
 
LVL 5

Author Comment

by:bham3dman
ID: 33683458
klakkas, thanks but is there no way to get the index of the listview item?  How would I at a later point, tell the datapager which page to display by using the imagebutton index?

lucky85, I did try this but the result is always -1.

Thanks guys.
0
 
LVL 7

Expert Comment

by:klakkas
ID: 33683538
The thing is that when you click on an imagebutton of a row, that does not necessarily select the row in the ListView.

So, you always get -1 because is reality, no row is actually selected.
0
 
LVL 18

Expert Comment

by:Anil Golamari
ID: 33683612
0
 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33683754
I your ListView Click or Double Click event put this code:
Dim SelIndex As Integer

        For Each sItem As ListViewItem In ListView.SelectedItems
            SelIndex = sItem.Index
            messagebox.Show(Selindex)  
     Next
0
What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33684212
Small Correction
Here you get the index you want:
In your ListView Click or Double Click event put this code:

Dim SelIndex As Integer

        For Each sItem As ListViewItem In ListView.SelectedItems
            SelIndex = sItem.Index
         
     Next
         messagebox.Show(Selindex)  
0
 
LVL 5

Author Comment

by:bham3dman
ID: 33684640
jtoutou, I tried your code but get an error using ListView.SelectedItems

Error: 'SelectedItems' is not a member of 'System.Web.UI.WebControls.ListView'

0
 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33684691
ooooo...this is for a windows app..Very sorry ....i'll try again...
0
 
LVL 5

Author Comment

by:bham3dman
ID: 33684697
Thanks jtoutou. :)
0
 
LVL 18

Accepted Solution

by:
John (Yiannis) Toutountzoglou earned 500 total points
ID: 33684735
0
 
LVL 5

Author Comment

by:bham3dman
ID: 33685062
That works for me jtoutou.  Thanks!  I wound up using the following:

 Protected Sub ListView1_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewCommandEventArgs) Handles ListView1.ItemCommand

Dim idx As Integer
Dim dataItem As ListViewDataItem = CType(e.Item, ListViewDataItem)
idx = ListView1.Items.IndexOf(dataItem)

This gives me the index of the selected item on the current page.  Now all I have to do is a little math with the datapager to figure out where I need to return.  Thanks again.
0
 
LVL 18

Expert Comment

by:John (Yiannis) Toutountzoglou
ID: 33685323
Glad i helped you!!!!
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

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.
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…

760 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

20 Experts available now in Live!

Get 1:1 Help Now