Mostrando las entradas con la etiqueta JQuery. Mostrar todas las entradas
Mostrando las entradas con la etiqueta JQuery. Mostrar todas las entradas

lunes, 19 de octubre de 2015

Carrusel de imágenes dinámico en ASPX – UserControl

Una opción es escribir por medio de una función el código html tal como necesite el javascript que vayamos a utilizar, la otra es crear un control de usuario que nos evite esto.
En el ejemplo se lee varias IDs desde un WebService y estos se envían a un manejador ashx el cual nos retorna las imágenes (context.Response.ContentType = "image/jpeg";) correspondientes a cada ID.


Vamos a usar el carrusel de http://sorgalla.com/projects/jcarousel/

Control de Usuario

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        ResponseWS __list = WS.ObtenerLista();
        this.rpt_carrusel.DataSource = __list.Items;
        this.rpt_carrusel.DataBind();
    }
}

En el ASPX

<div id ="Div1">
     <asp:Repeater ID ="ggggggrpt_carrusel" runat ="server">                                
        <HeaderTemplate>                                     
            <ul id ="mycarousel" class ="jcarousel-skin-tango">                         
         </HeaderTemplate>                                                
         <ItemTemplate>                                                      
            <li>
                <a href ="<%# "detalle.aspx?id="+Eval("Id") %>" title ="">
                    <asp:Image ID ="imglst" runat ="server" ImageUrl ='<%#"../imagen.ashx?id="+Eval("Id")%>' Width ="140" Height ="140" />  
                </a>
             </li>                                                   
          </ItemTemplate>                                                  
          <FooterTemplate>
            </ul>
          </FooterTemplate>
     </asp:Repeater>
</div>

Uso del Control de Usuario

En el aspx ponemos a partir de la segunda linea
<%@ Register src="~/ucontrol/WebUserControl.ascx" TagName="WebUserControl" TagPrefix="ucPersonal" %>
Donde src es la ruta donde se contruyo el control de usuario, luego en el html:

<head runat="server">
    <title></title>
    <script type="text/javascript" src="http://sorgalla.com/projects/jcarousel/lib/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="http://sorgalla.com/projects/jcarousel/lib/jquery.jcarousel.min.js"></script>
    <link href="Css/skinC.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript">
        jQuery(document).ready(function () {
            jQuery('#mycarousel').jcarousel({
                scroll: 3
            });
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div style="padding-left:100px" >
            <ucPersonal:WebUserControl ID="WebUserControl" runat="server" />
        </div> 
    </form>
</body>

El css que se lo modificó un poco a partir del original

.jcarousel-skin-tango .jcarousel-container {
    -moz-border-radius:10px;    -webkit-border-radius:10px;   border-radius: 10px;    background:
  1. F0F6F9;    border: 1px solid  #346F97;
}
.jcarousel-skin-tango .jcarousel-direction-rtl {
        direction:rtl;
}
.jcarousel-skin-tango .jcarousel-container-horizontal {
    /*width:245px;*/
    width: 69%;    padding: 20px 40px;
}
.jcarousel-skin-tango .jcarousel-container-vertical {
    /*width:75px;
    height: 245px;*/
    padding: 40px 20px;
}
.jcarousel-skin-tango .jcarousel-clip {
    overflow: hidden;
}
.jcarousel-skin-tango .jcarousel-clip-horizontal {
   /* width:  245px;     height: 75px;*/
}
.jcarousel-skin-tango .jcarousel-clip-vertical {
    width75px;    height: 245px;
}
.jcarousel-skin-tango .jcarousel-item {
    /*width:75px;
    height: 75px;*/
}
.jcarousel-skin-tango .jcarousel-item-horizontal {
        margin-left:0;    margin-right:10px;
}
.jcarousel-skin-tango .jcarousel-direction-rtl .jcarousel-item-horizontal {
        margin-left:10px;    margin-right: 0;
}
.jcarousel-skin-tango .jcarousel-item-vertical {
    margin-bottom:10px;
}
.jcarousel-skin-tango .jcarousel-item-placeholder {
    background: #fff;    color #000;
}
/**  *  Horizontal Buttons
 */
.jcarousel-skin-tango .jcarousel-next-horizontal {
    position: absolute;    top: 43px;
    /*right:-5px;
    width: 32px;
    height: 32px;*/
    right: -32px;    width: 38px;    height: 75px;    cursor: pointer;    background: transparent url(../img/carrusel/derecha.png) no-repeat 0 0;
}
.jcarousel-skin-tango .jcarousel-direction-rtl .jcarousel-next-horizontal {
    left: 5px;     right: auto;    background-image: url(../img/carrusel/izquierda.png);
}
.jcarousel-skin-tango .jcarousel-next-horizontal:hover,
.jcarousel-skin-tango .jcarousel-next-horizontal:focus {
    /*background-position:-32px 0;*/
   background-position:-1px 0; }
.jcarousel-skin-tango .jcarousel-next-horizontal:active {
    /*background-position:-64px 0;*/
}

.jcarousel-skin-tango .jcarousel-next-disabled-horizontal,
.jcarousel-skin-tango .jcarousel-next-disabled-horizontal:hover,
.jcarousel-skin-tango .jcarousel-next-disabled-horizontal:focus,
.jcarousel-skin-tango .jcarousel-next-disabled-horizontal:active {
    cursor: default;
    /*background-position: -96px 0;*/
}
.jcarousel-skin-tango .jcarousel-prev-horizontal {
    position: absolute;    top: 43px;
    /*left: 5px;
    width: 32px;
    height: 32px;*/
    left: -32px;    width: 38px;    height: 75px;        cursor: pointer;    background: transparent url(../img/carrusel/izquierda.png) no-repeat 0 0;
}
.jcarousel-skin-tango .jcarousel-direction-rtl .jcarousel-prev-horizontal {
    left: auto;    right: 5px;    background-image:url(../img/carrusel/derecha.png);
}
.jcarousel-skin-tango .jcarousel-prev-horizontal:hover,
.jcarousel-skin-tango .jcarousel-prev-horizontal:focus {
    /*background-position:-32px 0;*/
    background-position:-1 0;
}
.jcarousel-skin-tango .jcarousel-prev-horizontal:active {
    /*background-position:-64px 0;*/
}
.jcarousel-skin-tango .jcarousel-prev-disabled-horizontal,
.jcarousel-skin-tango .jcarousel-prev-disabled-horizontal:hover,
.jcarousel-skin-tango .jcarousel-prev-disabled-horizontal:focus,
.jcarousel-skin-tango .jcarousel-prev-disabled-horizontal:active {
    cursor: default;
    /*background-position:-96px 0;*/
}

/**
 *  Vertical Buttons
 */
.jcarousel-skin-tango .jcarousel-next-vertical {
    position: absolute;    bottom: 5px;    left: 43px;    width: 32px;    height: 32px;    cursor: pointer;    background: transparent url(next-vertical.png) no-repeat 0 0;
}
.jcarousel-skin-tango .jcarousel-next-vertical:hover,
.jcarousel-skin-tango .jcarousel-next-vertical:focus {
    background-position:0 -32px;
}
.jcarousel-skin-tango .jcarousel-next-vertical:active {
    background-position:0 -64px;
}
.jcarousel-skin-tango .jcarousel-next-disabled-vertical,
.jcarousel-skin-tango .jcarousel-next-disabled-vertical:hover,
.jcarousel-skin-tango .jcarousel-next-disabled-vertical:focus,
.jcarousel-skin-tango .jcarousel-next-disabled-vertical:active {
    cursor: default;    background-position: 0 -96px;
}
.jcarousel-skin-tango .jcarousel-prev-vertical {
    position: absolute;    top: 5px;    left: 43px;    width: 32px;    height: 32px;    cursor: pointer;    background: transparent url(prev-vertical.png) no-repeat 0 0;
}
.jcarousel-skin-tango .jcarousel-prev-vertical:hover,
.jcarousel-skin-tango .jcarousel-prev-vertical:focus {
    background-position:0 -32px;
}
.jcarousel-skin-tango .jcarousel-prev-vertical:active {
    background-position: 0 -64px;
}
.jcarousel-skin-tango .jcarousel-prev-disabled-vertical,
.jcarousel-skin-tango .jcarousel-prev-disabled-vertical:hover,
.jcarousel-skin-tango .jcarousel-prev-disabled-vertical:focus,
.jcarousel-skin-tango .jcarousel-prev-disabled-vertical:active {    
cursor: default;    background-position: 0 -96px;
}
El resultado:

Carrusel
Diego