none
Filtrar un listview con un textbox RRS feed

  • Pregunta

  • Pues soy nuevo en este lenguaje, y estoy en pleno desarrollo de mi proyecto de fin de carrera. He desarrollado una aplicación en la cual tengo un listview que se carga desde un txt. 

    La tabla tiene varias columnas entre ellas un ID y me gustaría poder indicar un ID en un textbox y al dar OK solo me dejara en el listview las filas con ese ID.

    A ver si alguien me puede echar una mano.

    Muchas Gracias!


    EDITO: por cierto. Uso C# en visual studio 2012... que estoy con la cabeza perdida
    • Editado Enterdanix domingo, 23 de febrero de 2014 19:48 C#
    domingo, 23 de febrero de 2014 18:23

Todas las respuestas

  • Basado en la suposición que el ID de los items esta al comienzo, te paso una posible solución (espero te sirva)

    namespace WindowsFormsMSDN
    {
        public partial class Form1 : Form
        {
            //Variable que contendra la lista completa de items
            private System.Windows.Forms.ListViewItem[] itemsTodos ;

            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                //Cargar el ListView desde el archivo
                //...

                //Copiar los ListViewItems cargados en el ListView en itemTodos
                itemsTodos = new ListViewItem[listView1.Items.Count];
                this.listView1.Items.CopyTo(itemsTodos,0);
            }

           
           
           
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                listView1.Items.Clear();  //Borra el ListView
                List<ListViewItem> itemsAUX = new List<ListViewItem>();  //Lista Auxiliar para el filtrado
                //Recorre todos los items
                foreach (ListViewItem lvi in itemsTodos)
                {
                    //Filtra los items que comienzan con el valor de textBox1.Text
                    if (lvi.Text.StartsWith(textBox1.Text))
                        itemsAUX.Add(lvi); //Agregar el Item encontrado.
                }
                listView1.Items.AddRange(itemsAUX.ToArray()); //Recargar el ListView
            }
        }
    }

    • Propuesto como respuesta Pablo Fébolo jueves, 27 de febrero de 2014 15:18
    jueves, 27 de febrero de 2014 15:13