private void SortGroups() { // Save and clear old groups var Groups = new ListViewGroup[lvProfiles.Groups.Count]; lvProfiles.Groups.CopyTo(Groups, 0); lvProfiles.Groups.Clear(); // Add groups back in, sorted ascending lvProfiles.Groups.AddRange(Groups.OrderBy(x => x.Header).ToArray()); }
/// <summary> /// Tri la liste en fonction de l'index de colonne <paramref name="ColumnIndex"/>. Si la colonne est la colonne /// quantité, rien ne se passe. /// </summary> /// <param name="ColumnIndex">Le numéro de la colonne sur laquelle trier.</param> private void SortColumn(int ColumnIndex) { // si c'est la quantité on annule le tri. if (ColumnIndex == COLUMN_QUANTITY) { return; } // On enlève le symbole ▼ de la dernière colonne trié (si elle existe). var SortedColumn = listView1.Columns[ColumnIndex]; if (LastSortedColumn != null) { LastSortedColumn.Text = LastSortedColumn.Text.Substring(2, LastSortedColumn.Text.Length - 2); } // On créer des groupes alphabéthique en fonction de la colonne. foreach (ListViewItem ListView1Item in listView1.Items) { var FirstLetter = ListView1Item.SubItems[ColumnIndex].Text.Substring(0, 1); var ListView1Group = listView1.Groups[FirstLetter.ToLower()]; if (ListView1Group == null) { listView1.Groups.Add(ListView1Group = new ListViewGroup(FirstLetter.ToLower(), FirstLetter.ToUpper())); } ListView1Item.Group = ListView1Group; } // On tri les groupes et on ajoute à la colonne le triangle indiquant le sens du tri. var SortedGroup = new ListViewGroup[listView1.Groups.Count]; listView1.Groups.CopyTo(SortedGroup, 0); listView1.Groups.Clear(); var SortIcon = ""; switch (listView1.Sorting) { case SortOrder.Ascending: listView1.Groups.AddRange(SortedGroup.OrderBy(Group => Group.Name).ToArray()); SortIcon = "▲ "; break; case SortOrder.Descending: listView1.Groups.AddRange(SortedGroup.OrderByDescending(Group => Group.Name).ToArray()); SortIcon = "▼ "; break; } SortedColumn.Text = SortIcon + SortedColumn.Text; listView1.Sort(); LastSortedColumn = SortedColumn; }
private void SortGroups(ListView list) { if (list.Groups.Count > 1) { ListViewGroup[] groups = new ListViewGroup[list.Groups.Count]; list_TestsPending.Groups.CopyTo(groups, 0); groups = groups.OrderBy(g => g.Name).ToArray(); list_TestsPending.Groups.Clear(); list_TestsPending.Groups.AddRange(groups); } }
private void listViewProdutos_DragDrop(object sender, DragEventArgs e) { ListView lvTarget = (ListView)sender; if (e.Data.GetDataPresent(typeof(ListView.SelectedListViewItemCollection))) { foreach (ListViewItem current in (ListView.SelectedListViewItemCollection)e.Data.GetData(typeof(ListView.SelectedListViewItemCollection))) { string cat = current.Group.Name; current.Remove(); ListViewGroup LVG = null; foreach (ListViewGroup lvg in lvTarget.Groups) { if (lvg.Name == cat) { LVG = lvg; break; } } if (LVG == null) { LVG = lvTarget.Groups.Add(cat, cat); } ListViewGroup[] oGroups = new ListViewGroup[lvTarget.Groups.Count]; lvTarget.Groups.CopyTo(oGroups, 0); lvTarget.Groups.Clear(); lvTarget.Groups.AddRange(oGroups.OrderBy(x => x.Name).ToArray()); ListViewItem lvi = lvTarget.Items.Add((ListViewItem)current); lvi.Group = LVG; } lvTarget.Sort(); _mapas[bindingSourceMapas.Position].ProdutosUpdate(listViewProdutosMapeados); LojaBindingNavigatorSaveItem.Enabled = true; } }