ListView - Ripristinare la posizione della vista

venerdì 13 maggio 2005 - 11.11

sacsacsac Profilo | Newbie

Ciao a tutti.

Ho una ListView che mi visualizza i dati di un archivio.

A questa ListView ho associato un contextmenu per Aggiungere, modificare o eliminare i dati dell'archivio stesso.

Immediatamente dopo un'operazione di aggiornamento dell'archivio faccio la Clear() della ListView, e poi ripopolo il controllo; il mio problema è che ogni volta si riposiziona alla prima riga della prima tabella, e dunque se modifico un dato che è alla fine della Listview (o in mezzo caso peggiore) dopo l'aggiornamento mi si posiziona all'inizio, per vedere le modifiche devo scorrere la barra e cercare a "occhio" l'item modificato (e mi perdo anche la selezione dell'item).

Ho trovato la proprietà TopItem che mi restituisce la prima riga visibile del controllo ma non riesco a ripristinarla subito dopo l'aggiornamento.

Qualcuno mi puo' essere d'aiuto?

Grazie a tutti
Ciao

AntCiar Profilo | Expert

Anche io ho avuto il tuo stesso problema e l'ho risolto in questo modo:

premessa: io al tag dell'item della listview associo di solito la chiave della riga del db.

Prima di fare il clear, memorizzo la chiave della riga su cui sto oppure la chiave della nuova riga inserita.
Dopo il riempimento della listview, scorro tutti gli items da zero fino all'ultimo e valuto se il tag dell'elemento iesimo e uguale al tag che ho memorizzato nella variabile. se il valore è uguale allora faccio questo

listview.items(i).ensurevisible
application.doevent

in questo modo fa si che l'elemento i diventi il promo visualizzato nella lista
Se poi vuoi che venga anche evidenziato in blu (selezionato) scivi anche questo

listview.focus()
listview.item(i).selected = true

Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5