OVH Cloud OVH Cloud

Charger image

1 réponse
Avatar
tipoussin
Bonjour,
Je début en ASP.NET. J'ai un tableau d'image que j'affiche sur une page et
un cadre d'image (Image1). Je voudrais, lorsque je clique sur mon image
affiché, qu'il affiche sur image1 (C'est a dire Image1.ImageUrl =
imageCliqué). Merci pour votre aide
Voila mon Code :

<%@ Page Language="vb" %>
<script runat="server">

Sub Page_Load(Sender as Object, e as EventArgs)
If Not Page.IsPostBack Then
'tant que l'on n'a pas encore appliqué un quelconque événement
Dim MesImages As New ArrayList()
' création et assignation d'une variable tableau/array
MesImages.Add("Fleurs.jpg")
MesImages.Add("Fleur2.jpg")
MesImages.Add("PC.gif")
MesImages.Add("Ptiti.gif")
MesImages.Add("bonhomme0035.gif")

'dl.EditItemIndex=0
'permet de spécifier la position de l'élément à modifier
'
' on spécifie la source de données à appliquer à DataList
dl.DataSource = MesImages
' avec DataBind, on associe le DataList à la source de données
dl.DataBind()

End If
End Sub

function Charger(ByVal image as String)
image1.ImageUrl = image
End function

</script>
<html>
<head>
</head>
<body>
<form id="Form1" runat="server">
<p>
<!-- création de la datalist, bien faire correspondre l'ID -->
<asp:DataList id="dl" runat="server"
RepeatDirection="Horizontal">
<HeaderStyle font-bold="True" forecolor="Yellow"
backcolor="silver" />
<HeaderTemplate>
Quelques MesImagess de Wallonie
</HeaderTemplate>
<ItemStyle font-bold="True" forecolor="red"
backcolor="white" />
<ItemTemplate>
<a href=Charger(<%# Container.DataItem%>)> <img src="<%#
Container.DataItem%>" width=

"100" height= "100" /></a>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox text="<%# Container.DataItem%>"
runat="server" ID="Textbox1" />
</EditItemTemplate>
<AlternatingItemStyle backcolor="Silver" />
</asp:DataList>
</p>
<p>
&nbsp;
</p>
<p>
<asp:Image id="Image1" runat="server" Height="355px"
Width="548px"></asp:Image>
</p>
</form>
</body>
</html>

1 réponse

Avatar
Olivier Guinart [MS]
Bonjour,

l'appel de ta procedure Charger a l'interieur de ta page html ne peut pas
marcher. Le paramatre href doit etre une page web de ton site. Quelque chose
comme href="charger.aspx?<%# Container.DataItem%>" respecterait la syntaxe
href.

Une autre methode consiste a "envelopper" tes img src="..." par un asp
control, pour lequel tu definirais un methode repondant au click du control.

Par exemple (ca a marche pour moi, mais il doit y avoir plus elegant):
0- Mon tableau d'image est devenu global, en le declarant avant le load:
Shared MesImages As New ArrayList()
1- J'ai declare "Charger" dans mon datalist:
<asp:DataList id="dl" OnItemCommand="Charger" runat="server"
RepeatDirection="Horizontal"> qui sera appele quand un click sera effectue
2- Comment definir que c'est le click ? En remplacant ton ItemTemplate par
<ItemTemplate>
<asp:linkbutton id="SelectButton" CommandName="Select"
runat="server">
<Img src="<%# Container.DataItem%>" width="100" height=
"100"/>
</asp:linkbutton>
</ItemTemplate>
4- Raccorder le click et le code qui s'occupera du chargement, juste avant
de quitter Load:
AddHandler dl.ItemCommand, AddressOf Charger
5- Et Charger:
Sub Charger(ByVal sender As Object, ByVal e As DataListCommandEventArgs)
Image1.ImageUrl = MesImages(e.Item.ItemIndex)
End Sub


Cette deuxieme methode est moins elegante que la premiere conseillee, mais
c'est celle qui colle le mieux a ton code actuellement. Mon exemple complet
ci-dessous.

Bon courage pour ton projet. Tu ne debutes pas par le plus facile, mais
c'est une tres bonne facon d'apprendre.

Amicalement,

Olivier Guinart


-Please do not send email directly to this alias. This alias is for
newsgroup purposes only
-This posting is provided “AS IS” with no warranties, and confers no rights.

Le code complet:
aspx:

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
</head>
<body>
<form id="Form1" runat="server">
<p>
<!-- création de la datalist, bien faire correspondre l'ID -->
<asp:DataList id="dl" OnItemCommand="Charger" runat="server"
RepeatDirection="Horizontal">
<HeaderStyle font-bold="True" forecolor="Yellow"
backcolor="silver" />
<HeaderTemplate>
Quelques MesImagess de Wallonie
</HeaderTemplate>
<ItemStyle font-bold="True" forecolor="red"
backcolor="white" />
<ItemTemplate>
<asp:linkbutton id="SelectButton" CommandName="Select"
runat="server">
<Img src="<%# Container.DataItem%>" width="100" height=
"100"/>
</asp:linkbutton>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox text="<%# Container.DataItem%>"
runat="server" ID="Textbox1" />
</EditItemTemplate>
<AlternatingItemStyle backcolor="Silver" />
</asp:DataList>
</p>
<p>

</p>
<p>
<asp:Image id="Image1" runat="server" Height="355px"
Width="548px"></asp:Image>
</p>
</form>
</body>
</html>


Le vb:

Partial Class _Default
Inherits System.Web.UI.Page
Shared MesImages As New ArrayList()

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
'tant que l'on n'a pas encore appliqué un quelconque événement
' création et assignation d'une variable tableau/array
' création et assignation d'une variable tableau/array
MesImages.Add("Fleurs.jpg")
MesImages.Add("Fleur2.jpg")
MesImages.Add("PC.gif")
MesImages.Add("Ptiti.gif")
MesImages.Add("bonhomme0035.gif")

'dl.EditItemIndex=0
'permet de spécifier la position de l'élément à modifier
'
' on spécifie la source de données à appliquer à DataList
dl.DataSource = MesImages
' avec DataBind, on associe le DataList à la source de données
dl.DataBind()
End If

AddHandler dl.ItemCommand, AddressOf Charger
End Sub

Sub Charger(ByVal sender As Object, ByVal e As DataListCommandEventArgs)
Image1.ImageUrl = MesImages(e.Item.ItemIndex)
End Sub
End Class


"tipoussin" wrote:

Bonjour,
Je début en ASP.NET. J'ai un tableau d'image que j'affiche sur une page et
un cadre d'image (Image1). Je voudrais, lorsque je clique sur mon image
affiché, qu'il affiche sur image1 (C'est a dire Image1.ImageUrl =
imageCliqué). Merci pour votre aide
Voila mon Code :

<%@ Page Language="vb" %>
<script runat="server">

Sub Page_Load(Sender as Object, e as EventArgs)
If Not Page.IsPostBack Then
'tant que l'on n'a pas encore appliqué un quelconque événement
Dim MesImages As New ArrayList()
' création et assignation d'une variable tableau/array
MesImages.Add("Fleurs.jpg")
MesImages.Add("Fleur2.jpg")
MesImages.Add("PC.gif")
MesImages.Add("Ptiti.gif")
MesImages.Add("bonhomme0035.gif")

'dl.EditItemIndex=0
'permet de spécifier la position de l'élément à modifier
'
' on spécifie la source de données à appliquer à DataList
dl.DataSource = MesImages
' avec DataBind, on associe le DataList à la source de données
dl.DataBind()

End If
End Sub

function Charger(ByVal image as String)
image1.ImageUrl = image
End function

</script>
<html>
<head>
</head>
<body>
<form id="Form1" runat="server">
<p>
<!-- création de la datalist, bien faire correspondre l'ID -->
<asp:DataList id="dl" runat="server"
RepeatDirection="Horizontal">
<HeaderStyle font-bold="True" forecolor="Yellow"
backcolor="silver" />
<HeaderTemplate>
Quelques MesImagess de Wallonie
</HeaderTemplate>
<ItemStyle font-bold="True" forecolor="red"
backcolor="white" />
<ItemTemplate>
<a href=Charger(<%# Container.DataItem%>)> <img src="<%#
Container.DataItem%>" width >
"100" height= "100" /></a>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox text="<%# Container.DataItem%>"
runat="server" ID="Textbox1" />
</EditItemTemplate>
<AlternatingItemStyle backcolor="Silver" />
</asp:DataList>
</p>
<p>

</p>
<p>
<asp:Image id="Image1" runat="server" Height="355px"
Width="548px"></asp:Image>
</p>
</form>
</body>
</html>