Advertisement
Fhernd

Principal.cs

Mar 1st, 2018
1,950
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.40 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Windows.Forms;
  4.  
  5. namespace R710OrdenarListView
  6. {
  7.     public partial class FormPrincipal : Form
  8.     {
  9.         public FormPrincipal()
  10.         {
  11.             InitializeComponent();
  12.  
  13.             ListViewItem lviUsuario1 = new ListViewItem("1", 0);
  14.             lviUsuario1.SubItems.Add("Angela");
  15.             lviUsuario1.SubItems.Add("Perdomo");
  16.             lviUsuario1.SubItems.Add("angela@gmail.com");
  17.  
  18.             ListViewItem lviUsuario2 = new ListViewItem("2", 0);
  19.             lviUsuario2.SubItems.Add("Edward");
  20.             lviUsuario2.SubItems.Add("Ortiz");
  21.             lviUsuario2.SubItems.Add("edward@gmail.com");
  22.  
  23.             ListViewItem lviUsuario3 = new ListViewItem("3", 0);
  24.             lviUsuario3.SubItems.Add("Daniela");
  25.             lviUsuario3.SubItems.Add("Ordoñez");
  26.             lviUsuario3.SubItems.Add("daniela@outlook.com");
  27.  
  28.             lvwUsuarios.Items.Add(lviUsuario1);
  29.             lvwUsuarios.Items.Add(lviUsuario2);
  30.             lvwUsuarios.Items.Add(lviUsuario3);
  31.         }
  32.  
  33.         private void lvwUsuarios_ColumnClick(object sender, ColumnClickEventArgs e)
  34.         {
  35.             ListViewItemComparer ordenador = lvwUsuarios.ListViewItemSorter as ListViewItemComparer;
  36.  
  37.             if (ordenador == null)
  38.             {
  39.                 ordenador = new ListViewItemComparer(e.Column);
  40.                 lvwUsuarios.ListViewItemSorter = ordenador;
  41.             }
  42.             else
  43.             {
  44.                 ordenador.Columna = e.Column;
  45.             }
  46.  
  47.             lvwUsuarios.Sort();
  48.         }
  49.  
  50.     }
  51.  
  52.     public class ListViewItemComparer : IComparer
  53.     {
  54.         /// <summary>
  55.         /// Columna a ser comparada.
  56.         /// </summary>
  57.         public int Columna { get; set; }
  58.  
  59.         /// <summary>
  60.         /// Comparación numérica de las columnas.
  61.         /// </summary>
  62.         public bool Numerico { get; set; }
  63.  
  64.         public ListViewItemComparer(int indiceColumna)
  65.         {
  66.             Columna = indiceColumna;
  67.         }
  68.  
  69.         public int Compare(object x, object y)
  70.         {
  71.             ListViewItem elementoX = x as ListViewItem;
  72.             ListViewItem elementoY = y as ListViewItem;
  73.  
  74.             if (elementoX == null && elementoY == null)
  75.             {
  76.                 return 0;
  77.             }
  78.             else if (elementoX == null)
  79.             {
  80.                 return -1;
  81.             }
  82.             else if (elementoY == null)
  83.             {
  84.                 return 1;
  85.             }
  86.  
  87.             if (elementoX == elementoY)
  88.             {
  89.                 return 0;
  90.             }
  91.  
  92.             if (Numerico)
  93.             {
  94.                 decimal valorItemX, valorItemY;
  95.  
  96.                 if (!Decimal.TryParse(elementoX.SubItems[Columna].Text, out valorItemX))
  97.                 {
  98.                     valorItemX = 0;
  99.                 }
  100.  
  101.                 if (!Decimal.TryParse(elementoY.SubItems[Columna].Text, out valorItemY))
  102.                 {
  103.                     valorItemY = 0;
  104.                 }
  105.  
  106.                 return Decimal.Compare(valorItemX, valorItemY);
  107.             }
  108.             else
  109.             {
  110.                 string valorTextualItemX = elementoX.SubItems[Columna].Text;
  111.                 string valorTextualItemY = elementoY.SubItems[Columna].Text;
  112.  
  113.                 return String.Compare(valorTextualItemX, valorTextualItemY);
  114.             }
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement