martes, 27 de octubre de 2009

ASP.NET – RadioButtonList con imagenes

radiobutton Hay que reconocer que una imagen siempre es mucho más representativa que una frase… y mucho más atractiva claro está.

Por ello, a veces las palabras son reemplazadas por bellas imágenes.

Imaginemos por ejemplo que tenemos un catálogo de productos y queremos elegir un producto de una lista (como la imagen de arriba).

Para ello necesito:

1.- un control ASP.NET RadioButtonList:

<form id="form1" runat="server">
<
asp:RadioButtonList ID="RadioButtonList1" runat="server">
</
asp:RadioButtonList>
</
form>

2.- y un poquito de código VB.NET:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then Return

Dim
c As Char = Html32TextWriter.DoubleQuoteChar
Dim js As String = "return this.parentNode.previousSibling.checked=true;"
Dim IMGs As New List(Of String)

IMGs = MyImages()
Dim i As Integer = 0
For Each img As String In IMGs
RadioButtonList1.Items.Add(New ListItem(String.Format("<a href={0}javascript:;{0} onclick={0}{1}{0}><img src={0}{2}{0} style={0}border: none{0} /></a>", c, js, img), i))
i += 1
Next img

End Sub
    Private Function MyImages() As List(Of String)
Dim IMGs As New List(Of String)

IMGs.Add("images/excel.png")
IMGs.Add("images/tools_for_excel.png")
IMGs.Add("images/word.png")

Return IMGs

End Function

Eso es todo. Paso a explicar el código:

En el Page_Load lo que hago es declarar una variable llamada js = "return this.parentNode.previousSibling.checked=true;" , lo que esta línea hace es dejar marcado el radio al hacer click en la imagen… ;)

Luego simplemente a través de un bucle For añado un poco de código html a cada radio button que voy añadiendo… de esta manera se muestran las imágenes.

Y finalmente hay una función MyImages() As List(Of String) que me permita cargar las imágenes que guardo en una carpeta llamada "images/" que luego se mostrarán en cada radiobutton. Simple no?

;)

10 comentarios:

Unknown dijo...

Hola, me parece muy bueno tu foro, pero queria pedirte si puedes subir 2 tutoriales:
1) Un mantenimiento con imagenes (como subir imagenes al servidor y en mi Base de Datos almacenar la ruta)
2) Como hacer un login con usuarios registrados en mi BD, y que al entrar a ciertas páginas se valide que este autentificado.

Te lo agradecería un monton.

Saludos

Te dejo mi correo darkcueva01@gmail.com

Unknown dijo...

Gracias a tu post me di cuenta que existia el radiobutton list. ¿Sabes si existe algún control del .net o en ajax que te muestre una barra el progreso de una votación?

Segundo Serrano dijo...

Hola Miguel,

te refieres a algo como esto?
http://tinyurl.com/barcharts

Si te refieres a otra cosa, por favor adjunta más detalles.

Unknown dijo...

Si exacto gracias!

Unknown dijo...

Estoy buscando la manera de implementarlo pero no encuentro. No tendrás un ejemplo de implementar ese control?

Segundo Serrano dijo...

Miguel,
aquí hay un ejemplo:
http://tinyurl.com/barchart0

Saludos

Unknown dijo...

a ese control funciona solamente con el framework 3.5??

Segundo Serrano dijo...

Así es Miguel,

necesitarás instalar el .NET Framework 3.5 SP1

aquí está el enlace
http://tinyurl.com/5m4j75

Saludos

Unknown dijo...

Yo tengo instalado el framework 2.0 y casí todo mi proyecto esta basado en ese framework, no hay problema si instalo el 3.5 no es así? y tambien funciona con el visual 2005 no es así ? Gracias por el apoyo !

Segundo Serrano dijo...

Miguel,

No hay problema... Visual Studio 2005 estará feliz de usar .net 3.5

Saludos