none
ListView Binding Image and title RRS feed

  • Pergunta

  • Ola pessoal quer ter o que a seguinte imagem ilustra:

    Mas não estou conseguindo apontar no codebehind que a imagem é para um sitio e o titulo para o outro. 

    O que tenho é o seguinte no html:

            <asp:ListView runat="server" ID="ImageListView" ItemPlaceholderID="itemPlaceHolder" 
         GroupPlaceholderID="groupPlaceHolder" >   <%--OnItemCommand="ImageListView_ItemCommand"--%>
        <LayoutTemplate>
            <h1>
                <asp:Label Text="" runat="server" ID="titleLabel" /> <%--  OnLoad="titleLabel_Load"--%>
            </h1>
            <div runat="server" id="groupPlaceHolder">
            </div>
        </LayoutTemplate>
        <GroupTemplate>
            <span>
                <div id="itemPlaceHolder" runat="server"></div>
            </span>
        </GroupTemplate>
        <ItemTemplate>
            <asp:ImageButton ID="itemImageButton" CssClass="avatarUBox" runat="server" CommandArgument="<%# Container.DataItem %>" ImageUrl="<%# Container.DataItem %>"/>  
             <asp:Label ID="label" runat="server"   Text="898"  />
        </ItemTemplate>
        <EmptyItemTemplate>
            <td />
        </EmptyItemTemplate>
        <EmptyDataTemplate>
            <h3>No images available</h3>
        </EmptyDataTemplate>
    </asp:ListView>


    e no CodeBehind tenho o seguinte:

           List<Pessoas> pessoasList = GetAvatar(id);
           List<Pessoas> outInfo = new List<Pessoas>();
    
          Pessoas favorite = new Pessoas();
    
         foreach (Pessoas url in pessoasList )
                {
                    if (url.AvatarURL != null)
                    {
                        imagepath = url.AvatarURL;
                    }
                    else
                    {
                        imagepath = "UserAvatar.png";
                    }
    
                    favorite.Name = url.Name;
                    favorite.AvatarURL = imagepath;
    
                    outInfo.Add(favorite);
    
                }
    
                ImageListView.DataSource = outInfo;
                ImageListView.DataBind();

    Com isto não estou conseguindo obter o pretendido, alguem me consegue ajudar nisso ai?

    Obrigado

    quarta-feira, 19 de novembro de 2014 15:56

Todas as Respostas

  • Cara seu código aspnet esta bem confuso por que vc não utiliza um repeat para fazer isso e tente utilizar sua estrutura html com divs e não tables pois isso dificulta bastante a utilização de componentes do asp.net.

    Nome : Romy G. Moura Cargo: Analista Programador

    quarta-feira, 19 de novembro de 2014 16:17
  • Já consegui colocar todos os dados que queria, só não fica é nada alinhado. A solução que encontrei foi :

        <LayoutTemplate>
            <div runat="server" id="groupPlaceHolder">
            </div>
        </LayoutTemplate>
        <GroupTemplate>
            <span>
                <div id="itemPlaceHolder" runat="server"></div>
            </span>
        </GroupTemplate>
    
    
        <ItemTemplate>
            <asp:ImageButton ID="itemImageButton" CssClass="avatarUBox" runat="server" ImageUrl='<%#Eval("url") %>'/>  
             <asp:Label ID="label" runat="server"  CssClass="avatarUBox"   Text='<%#Eval("name") %>'  />
        </ItemTemplate>
    
        <EmptyItemTemplate>
            <td />
        </EmptyItemTemplate>
        <EmptyDataTemplate>
            <h3>No images available</h3>
        </EmptyDataTemplate>
    </asp:ListView>

    Meu problema agora é que o texto não fica alinhado com a imagem. Como assim divs?

    quarta-feira, 19 de novembro de 2014 16:31