none
retornar indice de Array pelo Valor - C# RRS feed

  • Pergunta

  • Boa tarde, 

    Primeiramente colocarei o problema e depois como estou tentando fazer.

    Tenho uma página asp.net em C# que exibe uma imagem de acordo com um array, terá 2 botões, avançar imagem e retroceder imagem.

    Essas imagens são (6.png; 12.png; 15;png; 26.png, etc)

    Pensei em criar um Array

    int[] OpcoesSkin = new int[6]{6, 12, 15, 26, 27, 28};

    Dai quando desse o click ele deveria saber que esta no indice X e colocar X+1 ou, sabendo que esta no valor 15, passaria para o 26.

    Enfim não consegui fazer.

    Meu código que não funciona e nem esta perto de fazer funcionar

    protected void btn_AvancarSkin_Click(object sender, EventArgs e)
            {
                _indiceArray++;
                int ProxIndice = _indiceArray;
                if (ProxIndice == 5)
                {
                    ProxIndice = 1;
                }
            
                Response.Write(OpcoesSkin[ProxIndice].ToString());
    
    
                // img_Skin118.ImageUrl = @"../online/img_admin/skins/preview_118/" + OpcoesSkin[ProxIndice] + ".png";
    }
    
    protected void vtn_VoltarSkin_Click(object sender, EventArgs e)
            {
                _indiceArray--;
                int AntIndice = _indiceArray;
                if (AntIndice == -1)
                {
                    AntIndice = 5;
                }
               
                Response.Write(OpcoesSkin[AntIndice].ToString());
    }

    sexta-feira, 24 de janeiro de 2014 17:06

Todas as Respostas

  • Olá Leonardo,

    Creio que seja melhor você fazer isso no client, com jquery ou javascript, veja estes exemplos:

    http://www.codeproject.com/Tips/279724/JQuery-Carousel-Control-in-ASP-NET
    http://www.aspsnippets.com/Articles/Implement-Carousel-Image-Gallery-in-ASPNet-using-jQuery-jCarousel-Plugin.aspx
    http://www.c-sharpcorner.com/uploadfile/surya_bg2000/jquery-carousel-control-in-Asp-Net/

    Vitor Mendes | http://www.vitormendes.com.br/

    "Ajuda teu semelhante a levantar a sua carga, porém, não a carregá-la." (Pitágoras)

    • Sugerido como Resposta Guilherme da Luz sexta-feira, 24 de janeiro de 2014 18:50
    sexta-feira, 24 de janeiro de 2014 17:35
  • é que na verdade o problema é um pouco mais complexo..

    esse Array vem do banco de Dados..

    Quando eu clicar no botão proxima imagem, na verdade ele faz algumas coisas e depois ele muda a foto... Não é simplesmente mudar a imagem

    sexta-feira, 24 de janeiro de 2014 20:19
  • Leonardo,

    Talvez você poderia colocar o índice atual desta galeria em um HiddenField e quando efetuar a troca desta imagem recorrer ao index salvo neste input do tipo hidden e passar para a próxima foto.

    Vitor Mendes | http://www.vitormendes.com.br/

    "Ajuda teu semelhante a levantar a sua carga, porém, não a carregá-la." (Pitágoras)

    quinta-feira, 6 de fevereiro de 2014 11:22
  • O problema é que ao postar a pagina (executar o evento) você tem que manter as informações de suas variáveis em um escopo que a nova pagina carregada entenda. Isso pode ser usando Session, ViewState, QueryString, HiddenField, ou um Attributo dentro da tag html da sua imagem...

    Vou dar um exemplo usando atribuitos html, porque eu acho mais estiloso :-D

    <%@ Page Language="C#" AutoEventWireup="true" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">
        private readonly static int[] ARRAY = { 01, 20, 14, 32, 68, 07 };
    
        protected void OnVoltar(object sender, EventArgs e) {
            var index = Int32.Parse(imageView.Attributes["data-index"]);
            imageView.Attributes["data-index"] = String.Format("{0}", index - 1);
    
            // Verificar se index menor que zero
            
            imageView.ImageUrl = String.Format("{0:00}.png", ARRAY[index]);
        }
    
        protected void OnAvancar(object sender, EventArgs e) {
            var index = Int32.Parse(imageView.Attributes["data-index"]);
            imageView.Attributes["data-index"] = String.Format("{0}", index + 1);
    
            // Verificar se index maior que ARRAY.Lenght
            
            imageView.ImageUrl = String.Format("{0:00}.png", ARRAY[index]);
        }
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Image ImageUrl="" runat="server" data-index="0" ID="imageView" />
        </div>
        <div>
            <asp:Button Text="Voltar" runat="server" OnClick="OnVoltar" />
            <asp:Button Text="Avancar" runat="server" OnClick="OnAvancar" />
        </div>
        </form>
    </body>
    </html>


    Microsoft Community Contributor


    quinta-feira, 6 de fevereiro de 2014 13:12
    Moderador