none
Evitar que se introduzcan duplicados en un listview RRS feed

  • Pregunta

  • Hola quisiera saber si hay una forma o alguien que tenga una función que me valide que no se introduzcan valores iguales en un listview...   estoy usando VS C# 2015
    jueves, 19 de octubre de 2017 22:44

Respuestas

  • Hola Sully, si te sirve puedes utilizar FindItemWithText para comparar los items declarando Listviewitem y comparando con el ListView1 ej

      private void Form1_Load(object sender, EventArgs e)
            {
              
                for (int i = 0; i <= 100; i++)
                {
                    DateTime Dte = DateTime.Now ;
                    string b = Dte.ToString("yyyyMMddHHmmssff");
                    ListViewItem ItemLv = listView1.FindItemWithText(b);
                   
                    if (ItemLv != null)  
                    {
                        
                    }
                    else
                     {
                        listView1.Items.Add(b);
    
                    } 
                }

    Si no hay conicidencia la busqueda arroja null y entonces carga el nuevo Item. como ejemplo coloco una imagen donde con este mismo código se carga también un listbox todos los items, para comparar la diferencia

    ListView filtra resultados y ListBox carga todos los items

    Saludos

    viernes, 20 de octubre de 2017 0:03

Todas las respuestas

  • Sully, esto lo debes hacer desde los datos. Evita allí los duplicados, pues el listview es sólo un visor.

    Necesitamos mas detalles para poder ayudarte.

    Saludos


    Christian Amado
    Software Engineer | Microsoft MVP: Windows Development & Dynamics AX
    Don't forget to mark the right answer and vote up if helps you.
    My Blog

    jueves, 19 de octubre de 2017 23:46
  • ok mira, lo elementos que introduzco en ese list en desde un textbox y son códigos de barras que introduzco con una pistola, ahora, esto pasa en el evento keypres cuando se da un enter, porque de esa forma trabaja la pistola, entonces checo el codigo extraigo info de el y cuando el codigo esta registrado lo manda al listview

    este es el evento keypres

    private void txt_codbar_entradas_KeyPress(object sender, KeyPressEventArgs e)
            {
                try
                {
                    validando.solonumeros(e);
                    
                    if ((int)e.KeyChar == (int)Keys.Enter)
                    {
                        int id = int.Parse(txt_codbar_entradas.Text);
                        int validar = validarEntrada(id);
    
                        if (validar > 0)
                        {
                            e.Handled = true;
                            MessageBox.Show("Este articulo ya tiene una ENTRADA registrada", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            txt_codbar_entradas.Clear();
                        }
                        else
                        {
                            e.Handled = true;
                            infoLabelsEntradas();
                            txt_codbar_entradas.Clear();
                            lbl_entradas_cantidad.Text = (list_entradas.Items.Count).ToString();
                        }
                    }
                }
                catch { }
            }

    aqui uso el codigo de barras para obtener la info, si es que este esta registrado ya

    public void infoLabelsEntradas()
            {
                try
                {
                    consultas verinfo = new consultas();
                    articulo arti = new articulo();
                    DataTable dt = new DataTable();
    
                    arti.codbar = int.Parse(txt_codbar_entradas.Text);
                    dt = verinfo.info(arti);
                    if (dt.Rows.Count > 0)
                    {
                        lbl_entrada_articulo.Text = dt.Rows[0]["nombre_articulo"].ToString();
                        lbl_entrada_modelo.Text = dt.Rows[0]["modelo_articulo"].ToString();
                        lbl_entrada_tamaño.Text = dt.Rows[0]["tamaño_articulo"].ToString();
                        lbl_entrada_color.Text = dt.Rows[0]["color_articulo"].ToString();
                        lbl_entrada_lote.Text = dt.Rows[0]["lote_articulo"].ToString();
    
                        list_entradas.Items.Add(arti.codbar.ToString()); //AQUI AÑADO EL CODIGO EL LISTVIEW
                    }
                    else
                    {
                        lbl_entrada_articulo.Text = "n/a";
                        lbl_entrada_modelo.Text = "n/a";
                        lbl_entrada_tamaño.Text = "n/a";
                        lbl_entrada_color.Text = "n/a";
                        lbl_entrada_lote.Text = "n/a";
    
                    }
                }
                catch
                {
                    txt_codbar_entradas.Clear();
                }
            }
    yo e querido hacer la validacion en el evento keypress pero mis intentos no han funcionado!!!

    como le puedo hacer???

    jueves, 19 de octubre de 2017 23:55
  • Hola Sully, si te sirve puedes utilizar FindItemWithText para comparar los items declarando Listviewitem y comparando con el ListView1 ej

      private void Form1_Load(object sender, EventArgs e)
            {
              
                for (int i = 0; i <= 100; i++)
                {
                    DateTime Dte = DateTime.Now ;
                    string b = Dte.ToString("yyyyMMddHHmmssff");
                    ListViewItem ItemLv = listView1.FindItemWithText(b);
                   
                    if (ItemLv != null)  
                    {
                        
                    }
                    else
                     {
                        listView1.Items.Add(b);
    
                    } 
                }

    Si no hay conicidencia la busqueda arroja null y entonces carga el nuevo Item. como ejemplo coloco una imagen donde con este mismo código se carga también un listbox todos los items, para comparar la diferencia

    ListView filtra resultados y ListBox carga todos los items

    Saludos

    viernes, 20 de octubre de 2017 0:03