7 messaggi dal 27 febbraio 2015
Buonasera a tutti!
Vi chiedo un aiuto,
ho questo webcontrol dove il percoso dell'immagine (ImageUrl) viene estratto da un file xml


 <asp:Image ID="Logo" runat="server" ImageUrl='<%#XPath("img")%>'/>




Quello che vorrei è sapere è come faccio nell'Url a concatenare una stringa con il nome dell'immagine estratta dal file xml ?
In pratica vorrei ottenere una cosa di questo tipo:

ImageUrl=images/ '<%#XPath("img")%>' .png

Grazie mille per l'aiuto!
O in questo modo:
ImageUrl= '<%# "images/" +  XPath("img") + ".png" %>' 


oppure code behind
myImg.ImageUrl = ....

Ormai programmano tutti... ma la professionalità appartiene a pochi
7 messaggi dal 27 febbraio 2015
cavoli grazie tante!
Ho fatto varie prove ma non ero riuscita a prendere la giusta strada!

Scusami chiedo un altro dubbio,
se nel file .aspx.cs
volessi fare un controllo del tipo

Se URL dell'immagine = " ...."

come posso ottenere url ?

if (LogoHeader.ImageUrl())

        { }
        else 
        { }
Per logiche più complesse si passa al code behind. Ti suggerisco:
ImageUrl= '<%# FormatUrl(XPath("img")) %>' 

protected string FormatUrl(string img)
{
 return string.Format("images/{0}.png", img);
}



ovviamente vanno controllati i parametri in input e bisogna ricordare che FormatUrl viene eseguita per ogni elemento nella gridview o repeater. Quindi vanno evitate query o elaborazioni onerose che andrebbero spostate prima del binding.

Ormai programmano tutti... ma la professionalità appartiene a pochi
7 messaggi dal 27 febbraio 2015
ok Manuel grazie mille!
Non capisco però per quale motivo l'oggetto <asp:image>
che è dentro al <asp:repeater>
entrambi con i rispettivi ID ,
nel codice in .aspx.cs , ID dell'immagine non viene riconosciuto.
Se io avessi bisogno di fare dei controlli sull'oggetto immagine non posso ?
gli id di asp.net vengono utilizzati dal framework e come tale rielaborati: in pratica vengono costruiti a partire dalla gerarchia che li contiene (anche se ora questo comportamento si può variare).
Un image in un repeater non può avere l'id che specifichi perché se ce ne fossero n, avrebbero tutti gli stessi id.
Data la tua necessità, ci sono vari modi per risolvere:
1. se stai utilizzando del javascript in pagina devi guardare l'html generato e lavorare su quegli id
2. Se stai lavorando su altri metodi, come l'onrowdatabound, puoi recuperare il controllo relativo alla tua riga con FindControl:
Image myImage = (Image) e.FindControl("idImmagine");
if (myImage != null)
{
  myImage.ImageUrl = "foo";
}

oppure in un OnPreRender:
foreach(RepeaterItem item in myRepeater.Items)
{
   Image myImage = (Image) item.FindControl("idImmagine");
}



PS - il codice non è testato

Ormai programmano tutti... ma la professionalità appartiene a pochi

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.