Solved

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

Posted on 2010-09-15
14
606 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
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

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

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
Javascript to set controls visibility 5 38
vb.net help 4 31
Disable Security Alert  popup in Winforms  embedded webbrowser. 1 30
write xml in vb.net 2 24
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…
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.

803 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