Déplacer les items d'une listview sans drag&drop

Signaler
Messages postés
48
Date d'inscription
mercredi 22 juin 2005
Statut
Membre
Dernière intervention
7 mars 2007
-
Messages postés
48
Date d'inscription
mercredi 22 juin 2005
Statut
Membre
Dernière intervention
7 mars 2007
-
J'aimerais savoir si on peut retrier la listview à partir d'un index en particulier...sans redessiner tout le controle ou alors recréer une autre list view... ??

Il existe pas une méthode pour ??

DyskO =>> blackfamilyinc.free.fr !

8 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
33
je ne connais aucune méthode permettant de trier les items d'une listview entre 2 index.

par contre, tu peux toujours copier ces items dans une nouvelle collection (ArrayList), la triée et replacer ces items dans le listview de départ

Sébastien FERRAND
[MVP C#]
Messages postés
48
Date d'inscription
mercredi 22 juin 2005
Statut
Membre
Dernière intervention
7 mars 2007

C'est ce que je voulais dire par "créer une autre list view"...

Bon bin ok...merci pr ta réponse

DyskO =>> blackfamilyinc.free.fr !
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Salut,

Euh, tu parles d'effectuer un vrai tri ou juste de faire monter/descendre l'item sélectionné ?

/*
coq
MVP Visual C#
*/
Messages postés
48
Date d'inscription
mercredi 22 juin 2005
Statut
Membre
Dernière intervention
7 mars 2007

Bin un tri par rapport aux autres...

En fait moi je veux faire un recherche sur un list view contenant des noms de personnes.
Donc j'ai un texbox où dès qu'on saisit un lettre, bin il cherche si le nom existe dans la liste et par conséquent fait remonter le premier item correspondant mais faut que ceux qui suivent et qui commence par la meme lettre le suivre...
Donc en gros c'est un tri

Pour l'instant j'utilise un listview temporaire que je trie puis que je renvoie ...

De quoi tu parlais toi ?

DyskO =>> blackfamilyinc.free.fr !
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
J'étais partis sur une idée du genre bouton Up/Down pour monter/descendre l'item
L'idée générale pourrait correspondre, après adaptation :

En gros (pour le Up/Down) :
private void MoveItemUp(ListView lv, ListViewItem item)
{
if ( item.Index == 0 )
{
return;
}


int newIndex = item.Index-1;
item.Remove();
lv.Items.Insert(newIndex, item);
}


private void MoveItemDown(ListView lv, ListViewItem item)
{
if ( item.Index == lv.Items.Count-1 )
{
return;
}


int newIndex = item.Index+1;
item.Remove();
lv.Items.Insert(newIndex, item);
}

L'idée générale est peut être adaptable à ton problème, il suffirait de supprimer tes items (Remove) puis de les insérer en index 0, ce qui pourrait économiser le traitement de l'intégralité des items.
A toi de voir si le jeu en vaut la chandelle.

/*
coq
MVP Visual C#
*/
Messages postés
48
Date d'inscription
mercredi 22 juin 2005
Statut
Membre
Dernière intervention
7 mars 2007

Effectivement ta soluc est pas mauvaise....
J'arrivais pas à réindexer les Items puisque la propriété Index est ReadOnly...

Mais d'un autre coté elle est pus complexe car il me faut quand même traîter tous les index puisque même ceux que je bouge pas devront forcément descendre dans la liste...

DyskO =>> blackfamilyinc.free.fr !
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Ba quand tu insère en haut, les autres descendent forcément, vu que tu insères.

/*
coq
MVP Visual C#
*/
Messages postés
48
Date d'inscription
mercredi 22 juin 2005
Statut
Membre
Dernière intervention
7 mars 2007

Huuuuummmm....
Si tu le dis alors....
J'essayerais et je te dirais si il y a un problème
Merci

DyskO =>> blackfamilyinc.free.fr !