jQuery Slider de forma dinámica con ASP.NET

0
7883

jQuery nos permite darle a nuestras páginas web una gran cantidad de efectos sumamente llamativos. En este ejemplo vamos a explicar como utilizar «jQuery Slider» (uno de los muchos Sliders), cargando las imágenes de forma dinámica.

Descargar ejemplo jQuerySlider-01.rar

Ver ejemplo
http://gadgetinspiration.com/blog/wp-content/uploads/jquery%20sliders/index.html

Aquí vamos a transformar el ejemplo original jQuery Slider (http://www.dreamcss.com/2009/04/create-beautiful-jquery-sliders.html) en una forma dinámica, el originar carga las imágenes quemadas del código html,  pero aquí vamos a transformalo para que cargue a partir de un objeto o consulta a la base de datos.

En este ejemplo vamos a cargar las imágenes desde un objeto de datos, y desplegar dinámicamente en la página web.  Cuando me refiero a un objeto de datos es una referencia a un dataset, data table, xml, una consulta a la base de datos, etc.

En nuestro caso vamos a crea un dataset con 7 registros, 7 imágenes que se van a desplegar en nuestro jQuery Slider.

Para crear el objeto de datos creamos la función GetDataset(), la cual es solo un ejemplo y la debes reemplazar por la lectura correcta de tu información, entiendase base de datos, xml, rss, etc.

Archivo Default.vb (Code-Behind)

'Esta función es solo un ejemplo, aquí deberías tener 
'el llamado a la carga de información con las imágenes que desas mostrar

Private Function GetDataset() As Data.DataSet
    'Esta función simula una consulta a la base de datos.
    'Retornamos un dataset como si se hiciera un select a una tabla 
    'con los datos correspondientes para mostrar las imágenes.
    Dim ds As New Data.DataSet
    Dim dt As New Data.DataTable
    dt.Columns.Add(New DataColumn("codigo_imagen", GetType(Integer)))
    dt.Columns.Add(New DataColumn("titulo_imagen", GetType(String)))
    dt.Columns.Add(New DataColumn("descripcion_imagen", GetType(String)))
    dt.Columns.Add(New DataColumn("path_imagen", GetType(String)))

    Dim dr As DataRow
    dr = dt.NewRow
    dr("codigo_imagen") = 1
    dr("titulo_imagen") = "nature beauty"
    dr("descripcion_imagen") = "nature beauty photography"
    dr("path_imagen") = "images/nature-photo.png"
    dt.Rows.Add(dr)

    dr = dt.NewRow
    dr("codigo_imagen") = 2
    dr("titulo_imagen") = "blue river"
    dr("descripcion_imagen") = "fotografía bosque río azul"
    dr("path_imagen") = "images/nature-photo1.png"
    dt.Rows.Add(dr)

    dr = dt.NewRow
    dr("codigo_imagen") = 3
    dr("titulo_imagen") = "nature beauty"
    dr("descripcion_imagen") = "fotografía rayo de luz"
    dr("path_imagen") = "images/nature-photo2.png"
    dt.Rows.Add(dr)

    dr = dt.NewRow
    dr("codigo_imagen") = 4
    dr("titulo_imagen") = "nature beauty"
    dr("descripcion_imagen") = "fotografía paisaje maravilloso"
    dr("path_imagen") = "images/nature-photo3.png"
    dt.Rows.Add(dr)

    dr = dt.NewRow
    dr("codigo_imagen") = 5
    dr("titulo_imagen") = "nature beauty"
    dr("descripcion_imagen") = "fotografía tarde nublada"
    dr("path_imagen") = "images/nature-photo4.png"
    dt.Rows.Add(dr)

    dr = dt.NewRow
    dr("codigo_imagen") = 6
    dr("titulo_imagen") = "montaña"
    dr("descripcion_imagen") = "fotografía paisaje verde"
    dr("path_imagen") = "images/nature-photo5.png"
    dt.Rows.Add(dr)

    dr = dt.NewRow
    dr("codigo_imagen") = 7
    dr("titulo_imagen") = "catarata"
    dr("descripcion_imagen") = "naturaleza expectacular"
    dr("path_imagen") = "images/nature-photo6.png"
    dt.Rows.Add(dr)

    ds.Tables.Add(dt)

    Return ds
End Function

En el archivo Default.aspx, vamos a agregar el código necesario para mostrar los datos en nuestra página web.

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>DotNetcr.com - JQuery Example 01</title>
    <script src="scripts/jquery.js" type="text/javascript"></script>
    <script src="scripts/scripts.js" type="text/javascript"></script>
    <link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
      <!--/top-->
  <div id="header"><div class="wrap">
   <div id="slide-holder">
  <div id="slide-runner">
  
   <!--Repeater que muestra las imagenes en pantalla-->
      <asp:Repeater ID="RepeaterImagen" runat="server">
          <ItemTemplate>        
              <a href=""><img id='slide-img-<%#Eval("codigo_imagen")%>' 
                                src='<%#Eval("path_imagen")%>'  class="slide" alt="" /></a>
          </ItemTemplate>
      </asp:Repeater>     
      
      <div id="slide-controls">
       <p id="slide-client" class="text"><strong>post: </strong><span></span></p>
       <p id="slide-desc" class="text"></p>
       <p id="slide-nav"></p>
      </div>
  </div>
   </div>
   
     <!--Repeater que llama a la funcion jQuery-->
   <asp:Repeater ID="RepeaterScript" runat="server">
     <HeaderTemplate>
       <% Response.Write("<script type=""text/javascript"">" & vbCrLf)%>
       <% Response.Write("if (!window.slider) var slider = {};" & vbCrLf)%>
       <% Response.Write("slider.data = [")%>              
     </HeaderTemplate>
     <ItemTemplate>  
        { "id": "slide-img-<%#Eval("codigo_imagen")%>", 
                 "client": "<%#Eval("titulo_imagen")%>", 
                 "desc": "<%#Eval("descripcion_imagen")%>" }      
     </ItemTemplate>
     <SeparatorTemplate>,</SeparatorTemplate>
     <FooterTemplate><% Response.Write("];</script>")%></FooterTemplate>
    </asp:Repeater>  
      
  </div></div><!--/header-->
    
    </div>
    </form>
</body>
</html>

Ahora expliquemos el código. Agregamos el objeto repeater, el cual nos va a agregar todas las líneas correspondientes a cada una de las imágenes en la consulta.

El código sin repeater de forma normal se vería así, pero habría que hacerlo tantas veces como imágenes queramos en nuestro efecto slider

<a href=»»>
<img id=»slide-img-1″ src=»images/nature-photo.png» class=»slide» alt=»» /></a>

Pero nosotros necesitamos crearlo de forma dinámica y que cargue n imágenes. Por eso en el repeater dentro del <ItemTemplate>

<a href="">
<img id='slide-img-<%#Eval("codigo_imagen")%>' src='<%#Eval("path_imagen")%>'  
class="slide" alt="" /></a>

Luego en otro repeater tenemos que agregar el llamado a la función jQuery que es la que realmente crea el efecto. En el Header template del repeater le agregamos el header del javascript, luego agregamos por cada imágen un item en el arreglo, y finalmente el en Footer Template cerramos el javascript.

Ahora que tenemos todo esto, en el archivo Code-Behind Default.vb agregamos en el Load lo siguiente

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim dsImagen As New DataSet
    dsImagen = GetDataset()
    Me.RepeaterImagen.DataSource = dsImagen
    Me.RepeaterScript.DataSource = dsImagen
    Me.RepeaterImagen.DataBind()
    Me.RepeaterScript.DataBind()
End Sub

Ahí se llama y se cargan los objetos repeater con la consulta de nuestras imágenes.

En el archivo Default.aspx es requerido llamar en el <head> de la página las referencias

<script src="scripts/jquery.js" type="text/javascript"></script>
<script src="scripts/scripts.js" type="text/javascript"></script>
<link href="css/style.css" rel="stylesheet" type="text/css" />

Ahí se cargan los dos archivos javascript para que funcione el jQuery Slider y el archivo CSS. Sin estos 3 archivos no funciona el ejemplo. Estos archivos y las imágenes se encuentran en el archivo para descarga.

Descargar ejemplo jQuerySlider-01.rar

Ver ejemplo
http://gadgetinspiration.com/blog/wp-content/uploads/jquery%20sliders/index.html

Dejar respuesta

Please enter your comment!
Please enter your name here