none
ListView datos repetidos RRS feed

  • Pregunta

  • Buenas tardes Actualmente estoy desarrollando un WindowsForm en donde tengo un Listview que se alimenta de algunos textbox

    tengo estos textbox: Codigo,Descripcion,Mueble,hm

    y quisiera que cuando ingrese mas de una sola vez en el listview un repetido este mismo me arroje un messagebox como alerta o colorear el dato repetido en mi listview

    Actualmente asi agrego los datos al listview.

    Espero me puedan ayudar, gracias.

    try
         {
           ListViewItem lst1 = new ListViewItem();
           lst1.SubItems.Add(hm.Text);
           lst1.SubItems.Add(mueble.Text);
           lst1.SubItems.Add(codigo.Text);
           lst1.SubItems.Add(descripcion.Text);
           listView1.Items.Add(lst1);
           textBox1.Text = "";
           textBox1.Focus();
           textBox9.Text = "";
        }

    jueves, 22 de agosto de 2019 17:56

Todas las respuestas

  • hola

    >>quisiera que cuando ingrese mas de una sola vez en el listview un repetido este mismo me arroje un messagebox

    como validas si esta repetido ? o sea todos los campos sean iguales o quizas alguno en particular es la clave de la entidad, quizas el codigo

    porque antes de agregar el item podrias validarlo usando

        bool existe = listView1.Items.Cast<ListViewItem>().Any(x=> x.SubItems[2].Text == codigo.Text);
    
       if(existe){
    
           //aqui informas al usuario
    
           return;
    
       }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 22 de agosto de 2019 18:38
  • Hola Ricardo, otro metodo de busqueda duplicados, es una propiedad del ListView, FindItemWithText con el cual podemos sabér si esta, tanto el item por su nombre o los subitems si así lo deseamos

    Primer caso buscamos solo el items por su contenido (el nombre del item en ListView es la primer columna del msimo los demás son SubItems)

    ej:

      private void button2_Click(object sender, EventArgs e)
            {
                ListViewItem IT = LV.FindItemWithText(textBox1.Text,false,0);
              
                if ( IT == null)
                {
                    MessageBox.Show("No hay duplicados");
                }
                else
                {
    
                    MessageBox.Show("Dato Duplicado");
                }
            }

    En caso de que el texto lo busquemos dentro de los SubItems sería:

            private void button1_Click(object sender, EventArgs e)
            {


                if (LV.FindItemWithText(textBox1.Text, true, 0) == null)
                {
                    MessageBox.Show("No hay duplicados");
                }
                else
                {

                    MessageBox.Show("Dato Duplicado");
                }


            }

    FindItemWhidText devuelve un valor null si no encuetra item con el mismo string

    Saludos


    ARA San Juan 44 HEROES     ‗‗‗‗­|||||‗‗‗‗‗


    • Editado Marcelo PF jueves, 22 de agosto de 2019 20:39
    jueves, 22 de agosto de 2019 20:35