2016-01-11 1 views
1

Je donne les résultats suivants: ListAfficher les images dans le contrôle Repeater

private List<System.Web.UI.WebControls.Image> _searchResultList = new List<System.Web.UI.WebControls.Image>(); 

Cette liste peut contenir plusieurs images avec des URL différentes.

Je donne les résultats suivants Repeater:

<asp:Panel ID="SearchPanel" runat="server" ScrollBars="Vertical"> 
    <asp:Repeater ID="Repeater" runat="server"> 
     <ItemTemplate> 
      <asp:Image height="32" width="32" runat="server"/> 
     </ItemTemplate> 
    </asp:Repeater> 
</asp:Panel> 

En utilisant DataSource pour afficher les images ne semble pas fonctionner.

Repeater.DataSource = _searchResultList;   
Repeater.DataBind(); 

Qu'est-ce que je fais mal?

+0

Semblable à: http://stackoverflow.com/questions/33597934/select-all-images-using-asp-net-c-sharp –

+0

Avez-vous vérifié http://stackoverflow.com/questions/7885444/ comment-montrer-image-dans-la-colonne-de-repeater-control-dans-asp-net? – zkanoca

+0

Avez-vous ces images sérialisées dans des fichiers quelque part sur le côté serveur? La façon dont vous affichez des images sur une page Web est que vous les avez sous forme de fichiers et que vous les référencez sur la page Web en fournissant des informations sur les sources aux balises Image. Il n'y a pas de moyen facile de rendre juste un objet Image – Andrei

Répondre

1

Le _searchResultList n'est pas une liste de chaînes de sorte que vous ne pouvez pas utiliser ImageURL='<%Container.DataItem.ToString()%>'. Parce que _searchResultList est une liste d'images vous devez lier la propriété ImageUrl. Cela devrait fonctionner très bien pour vous:

<asp:Repeater ID="Repeater" runat="server"> 
    <ItemTemplate> 
     <asp:Image ID="Image1" height="32" width="32" runat="server" ImageUrl='<%# Eval("ImageUrl") %>' /> 
    </ItemTemplate> 
</asp:Repeater> 

Dans cet exemple Container.DataItem fait référence à un contrôle Image. C'est pourquoi nous avons utilisé Eval("ImageUrl") pour obtenir la propriété ImageUrl de chaque contrôle Image.

+0

Cela fonctionne parfaitement. Merci beaucoup :) – Kohnarik

+1

Dans cette réponse http://stackoverflow.com/a/33694399/2946329 que je vous ai montré plus tôt, vous pouvez utiliser 'ImageURL = '<% Container.DataItem.ToString()%>'' parce que le source est une liste de chaîne. Mais dans cet exemple 'Container.DataItem' fait référence à un contrôle' Image'. C'est pourquoi nous avons utilisé 'Eval (" ImageUrl ")' pour obtenir le 'ImageUrl' de chaque contrôle d'image. –

+0

Je ne m'en suis pas rendu compte. C'est une information très utile. Je vous remercie. – Kohnarik

1
 <asp:Panel ID="SearchPanel" runat="server" crollBars="Vertical"> 
     <asp:Repeater ID="Repeater" runat="server"> 
     <ItemTemplate> 
      <asp:Image height="32" width="32" runat="server" ImageURL='<%Container.DataItem.ToString()%>'/>// changes here 
     </ ItemTemplate> 
      </asp:Repeater> 
      </asp:Panel> 
+0

Autant que je voudrais que ça marche, ça ne fait rien pour moi. J'ai vérifié le _searchResultList et les images sont toutes dedans, comme elles devraient. Si j'ajoute un élément asp: Image en dehors du répéteur et que j'utilise le même ImageURL, cela fonctionne. Mais à l'intérieur du répéteur, même si j'utilise un ImageURL statique, il n'apparaît pas. – Kohnarik

+0

Ok, si je change ImageURL dans le Répéteur en ImageURL = "~/Images/ORAS/006.png" et qu'il y a 17 images dans ma _searchResultList, l'Image 006.png apparaîtra 17 fois. – Kohnarik

+0

donnez-moi un exemple de l'URL dans la liste –