none
Recorrer un listview con Checkbox RRS feed

  • Pregunta

  •  Hola buenas tardes, tengo un listview con diseño de checkbox, y deseo recorrer y saber cuales son mis elementos seleccionados, les mostrare como lo cargo con la información:

    Esta esta en el load:

                lvVideoJuegos.View = View.Details;
                lvVideoJuegos.Columns.Add("Código", 100);
                lvVideoJuegos.Columns.Add("Video juego", 150);
                lvVideoJuegos.Columns.Add("Tipo video juego", 150);

    y luego en un boton, lo lleno por medio de una funcion que llama un procedimiento de almacenado:

     ObjDataSet = Objdatos.PAMostrarVideoJuegos();

                foreach (DataRow row in ObjDataSet.Tables[0].Rows)
                {
                    ListViewItem item = new ListViewItem(Convert.ToString(row["IdVideoJuego"]));
                    item.SubItems.Add(Convert.ToString(row["DescripcionVideoJuego"]));
                    item.SubItems.Add(Convert.ToString(row["DescripcionTipoVideoJuego"]));

                    lvVideoJuegos.Items.Add(item);

                }

    Me falta crear mi ciclo for para recorrer los items seleccionados e ir insertando en la BD por medio de otra funcion que llama el procediento de almacenado que grabara, que lo llamare con un boton "Alquilar":

    Espero me puedan orientar, gracias!!

     
    domingo, 25 de junio de 2017 18:19

Respuestas

  • Hola:

     Podrias usar Linq para poder recuperar todos los Items seleccionados del control, para posteriormente ir mapeando los valores a los objetos que desees.

     Te muestro un ejemplo usando una clase para obtener los valores correspondientes de los Items seleccionados:

    IEnumerable<ListViewItem> items = (listView.CheckedItems.Cast<object>().Cast<ListViewItem>()).ToList();
    
    if (items.Any())
    {
        return items.Select(item => new NombreClase() { NombrePropiedad = item.SubItems[1].Text}).ToList();
    }
     El código podrías ponerlo dentro de una Función que te retorne una Lista de clases con todas las propiedades que desees, una lista de tipo string, int, etc, básicamente retornas lo que necesites para posteriormente utilizarlo donde desees o si así lo deseas ir enviando a la Bd directamente (esto según tu forma de programar).


    Saludos desde Monterrey, Nuevo León, México!!!

    • Propuesto como respuesta Pedro Ávila domingo, 25 de junio de 2017 20:02
    • Marcado como respuesta Joyce_ACModerator miércoles, 28 de junio de 2017 13:40
    domingo, 25 de junio de 2017 19:53

Todas las respuestas

  • foreach (ListViewItem item in listView1.CheckedItems)
    {
    	//Insertar            
    }


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 25 de junio de 2017 18:37
  • Hola:

     Podrias usar Linq para poder recuperar todos los Items seleccionados del control, para posteriormente ir mapeando los valores a los objetos que desees.

     Te muestro un ejemplo usando una clase para obtener los valores correspondientes de los Items seleccionados:

    IEnumerable<ListViewItem> items = (listView.CheckedItems.Cast<object>().Cast<ListViewItem>()).ToList();
    
    if (items.Any())
    {
        return items.Select(item => new NombreClase() { NombrePropiedad = item.SubItems[1].Text}).ToList();
    }
     El código podrías ponerlo dentro de una Función que te retorne una Lista de clases con todas las propiedades que desees, una lista de tipo string, int, etc, básicamente retornas lo que necesites para posteriormente utilizarlo donde desees o si así lo deseas ir enviando a la Bd directamente (esto según tu forma de programar).


    Saludos desde Monterrey, Nuevo León, México!!!

    • Propuesto como respuesta Pedro Ávila domingo, 25 de junio de 2017 20:02
    • Marcado como respuesta Joyce_ACModerator miércoles, 28 de junio de 2017 13:40
    domingo, 25 de junio de 2017 19:53