Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Windows.Forms;
- namespace R710OrdenarListView
- {
- public partial class FormPrincipal : Form
- {
- public FormPrincipal()
- {
- InitializeComponent();
- ListViewItem lviUsuario1 = new ListViewItem("1", 0);
- lviUsuario1.SubItems.Add("Angela");
- lviUsuario1.SubItems.Add("Perdomo");
- lviUsuario1.SubItems.Add("angela@gmail.com");
- ListViewItem lviUsuario2 = new ListViewItem("2", 0);
- lviUsuario2.SubItems.Add("Edward");
- lviUsuario2.SubItems.Add("Ortiz");
- lviUsuario2.SubItems.Add("edward@gmail.com");
- ListViewItem lviUsuario3 = new ListViewItem("3", 0);
- lviUsuario3.SubItems.Add("Daniela");
- lviUsuario3.SubItems.Add("Ordoñez");
- lviUsuario3.SubItems.Add("daniela@outlook.com");
- lvwUsuarios.Items.Add(lviUsuario1);
- lvwUsuarios.Items.Add(lviUsuario2);
- lvwUsuarios.Items.Add(lviUsuario3);
- }
- private void lvwUsuarios_ColumnClick(object sender, ColumnClickEventArgs e)
- {
- ListViewItemComparer ordenador = lvwUsuarios.ListViewItemSorter as ListViewItemComparer;
- if (ordenador == null)
- {
- ordenador = new ListViewItemComparer(e.Column);
- lvwUsuarios.ListViewItemSorter = ordenador;
- }
- else
- {
- ordenador.Columna = e.Column;
- }
- lvwUsuarios.Sort();
- }
- }
- public class ListViewItemComparer : IComparer
- {
- /// <summary>
- /// Columna a ser comparada.
- /// </summary>
- public int Columna { get; set; }
- /// <summary>
- /// Comparación numérica de las columnas.
- /// </summary>
- public bool Numerico { get; set; }
- public ListViewItemComparer(int indiceColumna)
- {
- Columna = indiceColumna;
- }
- public int Compare(object x, object y)
- {
- ListViewItem elementoX = x as ListViewItem;
- ListViewItem elementoY = y as ListViewItem;
- if (elementoX == null && elementoY == null)
- {
- return 0;
- }
- else if (elementoX == null)
- {
- return -1;
- }
- else if (elementoY == null)
- {
- return 1;
- }
- if (elementoX == elementoY)
- {
- return 0;
- }
- if (Numerico)
- {
- decimal valorItemX, valorItemY;
- if (!Decimal.TryParse(elementoX.SubItems[Columna].Text, out valorItemX))
- {
- valorItemX = 0;
- }
- if (!Decimal.TryParse(elementoY.SubItems[Columna].Text, out valorItemY))
- {
- valorItemY = 0;
- }
- return Decimal.Compare(valorItemX, valorItemY);
- }
- else
- {
- string valorTextualItemX = elementoX.SubItems[Columna].Text;
- string valorTextualItemY = elementoY.SubItems[Columna].Text;
- return String.Compare(valorTextualItemX, valorTextualItemY);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement