Solved

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

Posted on 2010-09-15
14
607 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
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 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

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…
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…

856 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