none
Agregar labels según contenido RRS feed

  • Pregunta

  • Buenos días mi pregunta es la siguiente,... tengo un ListView en el que muestro datos de una base de datos. Uno de los datos lo muestro en una Label. Mi pregunta es si puedo asignar tantas label como productos halla. Es decir yo asigno una variable, por ejemplo i, y por cada valor que muestre el ListView incremento en uno y lo que pretendo hacer es llamar al Label, "label+i".

    Puedo hacer esto??? no se si me explico si hay tres productos Label1, Label2 y Label3. Esque no se si al ID del Label le puedo asignar un nombre variable.

    Saludos y gracias.

    Se me olvidaba decir que es un proyecto web y esto lo hago en el .aspx.

    lunes, 8 de junio de 2015 7:39

Respuestas

  • En el Load de tu página debes crear dinámicamente las Label

    Un ejemplo 

    int i = 0; // para establecer el ID foreach(Product p in listaProducts) // suponemos hemos cargado en una lista los productos { i++; Label lbl = new Label(); lbl.ID = "Label" + i.ToString(); lbl.Style["Position"] = "Absolute" lbl.Style["Top"] = (25*i).ToString() + "px"; // aquí tendrás que calcular el top de cada iteracion. empezamos por 25 px por ejemplo lbl.Style["Left"] = (100*i).ToString() + "px"; // aquí tendrás que calcular el left de cada iteracion. empezamos por 100 px por ejemplo lbl.Text = lbl.ID + " text"; this.Controls.Add(lbl); // agregar el label a la colección de controles de la pagina

    }

    Esto es un ejemplo, lo importante es que te quedes con el concepto y lo adaptes


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    martes, 9 de junio de 2015 9:01
    Moderador

Todas las respuestas

  • Puedes usar un control Repeater para ello. Estableces una plantilla que quieres que se repita, en este caso un label, y al asignar la fuente de datos automáticamente se renderiza tu plantilla N veces.

    Espero haberme explicado


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    lunes, 8 de junio de 2015 7:46
    Moderador
  • hola

    por lo que entiendo se trata de una entidad relacionada, no se cual es la coleccion que asignas al Datasource del ListView, pero la segunda lista es de productos

    seria parecido a los planteado aqui

     Nested ListView in ASP.NET

    o sea un listview dentro de otro

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 8 de junio de 2015 10:27
  • A un mismo Label no puedes cambiarle el ID de esa manera, no puede variar, ya que para cambiar un atributo de un control necesitas hacerlo desde su ID.

    Una buena manera sería como te indicó Sergio, mediante un control Repeater.

    Saludos y suerte con ello,

    lunes, 8 de junio de 2015 12:48
  • No me he explicado bien no necesito un repeater para las labels. Lo que pretendia que es que por cada valor que me mostrara el ListView la "Label", por ejemplo, donde muestro el precio, que para el articulo 1 sea Label1, para el articulo2, Label2,......, no dentro de un resultado varias labels. Joer no me acabo de entender ni yo jejejej.

    A ver si tengo una base de datos con tres productos, hago una lista y la muestro en el listView,

    Por cada elemento muestro nombre, precio y código. EL precio lo muestro asi: <asp:Label....><%#Eval("Precio")%> </asp:label>

    Por cada producto lo que quiero es que la Label tenga nombre distinto.

    Mil gracias por vuestras indicaciones.

    martes, 9 de junio de 2015 8:01
  • Una pregunta... esos Label cómo los estás creando? Dinámicamente?

    Qué pasa si tienes 10 productos?


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 9 de junio de 2015 8:22
    Moderador
  • Es lo que queria hacer crearlos dinamicamente?? se puede? 

    Si tengo 10 productos 10 labels.

    martes, 9 de junio de 2015 8:40
  • En el Load de tu página debes crear dinámicamente las Label

    Un ejemplo 

    int i = 0; // para establecer el ID foreach(Product p in listaProducts) // suponemos hemos cargado en una lista los productos { i++; Label lbl = new Label(); lbl.ID = "Label" + i.ToString(); lbl.Style["Position"] = "Absolute" lbl.Style["Top"] = (25*i).ToString() + "px"; // aquí tendrás que calcular el top de cada iteracion. empezamos por 25 px por ejemplo lbl.Style["Left"] = (100*i).ToString() + "px"; // aquí tendrás que calcular el left de cada iteracion. empezamos por 100 px por ejemplo lbl.Text = lbl.ID + " text"; this.Controls.Add(lbl); // agregar el label a la colección de controles de la pagina

    }

    Esto es un ejemplo, lo importante es que te quedes con el concepto y lo adaptes


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    martes, 9 de junio de 2015 9:01
    Moderador
  • Gracias!
    martes, 9 de junio de 2015 10:03