Domanda

Ho un elenco che ha informazioni sulle immagini che voglio visualizzare. Ogni immagine ha 6 voci contenenti informazioni al riguardo e ci sono 20 immagini. 6 x 20 voci in totale.

listImg[0] = image_name
listImg[1] = image_url
listImg[2] = other_info
listImg[3] = other_info
listImg[4] = other_info
listImg[5] = other_info

Ora quello che voglio fare è visualizzare queste immagini una accanto all'altra, in una linea orizzontale, con il nome dell'immagine nella parte inferiore di ogni immagine (sovrapposizione, dovrebbe essere fatto solo con un tag DIV e un po 'di stile) . Il fatto è che non riesco a capire il modo migliore per generare questo elenco di immagini.

Qualche suggerimento con frammenti di codice?

Grazie m

È stato utile?

Soluzione

Forse crea una classe per organizzare meglio i tuoi dati sull'immagine e poi leggere da essa quando si ottiene il markup, ad esempio

class MyImage
{
   public string Name {get; set;}
   public string Url {get; set;}
   public List<string> OtherInfo {get; set;}
}

...

public List<MyImage> MyImages = new List<MyImage>();

...

var img = new MyImage {"Name","http://www.example.com"});
img.OtherInfo.Add("Info1");
img.OtherInfo.Add("Info2");
img.OtherInfo.Add("Info3");

string html = "";
foreach(var image in MyImages)
{
   // Access image data and write it out. etc.
   html+= String.Format("<div>{1}{2}</div>",image.Name, image.Url);
   foreach(var info in image.OtherInfo)
   {
      html+= "<div>" + info + "</div";
   }
}

// Write out your code to a literal, placeholder, etc.
MyLiteralControl.Text = html;

È inoltre possibile ottenere la scrittura dei dati creando prima i tuoi dati sul backend, e quindi semplicemente loop attraverso l'elenco nel markup effettivo prima che la pagina venga resa, ad esempio

<html><head></head><body>

   <div>My Images</div>
   <% foreach(var image in MyImages) { %>
      <div><%=image.Name%></div> <!-- format your markup here -->
   <% } %>
   </body>

</html>

Organizzare i tuoi dati al di fuori di un semplice array midimensionale si rivelerà molto più utile per mantenere e debug della tua architettura. Puoi anche creare oggetti aziendali da utilizzare attraverso il tuo sviluppo, quindi il tuo codice è molto più utile e passi meno tempo a riscrivere oggetti helper se si presenta la necessità per realizzare la stessa variante della tua logica.

Altri suggerimenti

Ecco un codice pseudo approssimativo per cercare di spiegare:

class ImageInfo
{
  string image_name;
  string image_url;
  //leavign out other_info since you don't say you are going to use it
}

List<ImageInfo> myImages = new List<ImageInfo>();
//load list

//Bind to listView
lv_Images.DataSource = myImages;
lv_Images.DataBind();

PSEUDO CODICE PER LOTTURA ELENCO

<listView>
  <itemTemplate>
    <div> <asp:Label text='<%# Bind("image_name") %>' /><br/><img src='<%# Bind("image_url") %>' />
.
.
.
.

Fammi sapere se qualcosa è confuso ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top