login  Naam:   Wachtwoord: 
Registreer je!
 Forum
Zoeken  Regels  Help
Categorieën > ASP

ASP.net repeater gebruiken voor webgallery (Opgelost)

Martijn2008 – 21/01/2010 16:02
Hallo allemaal,

In mijn code-behind page lees ik een willekeurige directory met afbeeldingen uit om deze vervolgens in ASP.net(view) te weergeven. Op dit moment doe ik dit met een label. Ik zou dit graag met de ASP.net repeater doen, omdat mij deze beter geschikt lijkt.

Hieronder een stukje code zoals ik het op dit moment gebruik:

  1. string[] aryPhotos;
  2.  
  3. aryPhotos = Directory.GetFiles(strFileSystemPath, "*.jpg");
  4.  
  5. foreach (string strPhoto in aryPhotos)
  6. {
  7. output.Text += "<img src=" + strDirAlbum + strPhoto.Substring(strFileSystemPath.Length + 1) + "\" />";
  8. }



Bedankt alvast!

Martijn

4 antwoorden

Gesponsorde links

titjes – 21/01/2010 17:03
  1. List<String> lstFotos = new List<String>();
  2. string[] aryPhotos = Directory.GetFiles(strFileSystemPath, "*.jpg");
  3. foreach(String foto in aryPhotos)
  4. lstFotos.Add("<img src=\"" + strDirAlbum + strPhoto.Substring(strFileSystemPath.Length + 1) + "\" />";
  5. uwRepeater.DataSource = lstFotos;
  6. uwRepeater.DataBind();


Martijn2008 – 21/01/2010 17:27
Cool, alleen nu vraag ik me nog af hoe ik de data bind in de view(ASP.net)?

titjes – 21/01/2010 18:09
Je kan blijkbaar niet zomaar een string doorgeven, of ik zou toch niet weten hoe. Anders was het simpel opgelost. Ik heb het even anders gedaan en dit werkt:

  1. //namen ophalen
  2. string[] aryPhotos = Directory.GetFiles(strFileSystemPath, "*.jpg");
  3. //DataTable maken
  4. DataTable dt = new DataTable();
  5. //1 kolom van het type String hieraan toevoegen
  6. dt.Columns.Add(new DataColumn("Image", System.Type.GetType("System.String")));
  7. //DataView maken, dit wordt de source van de Repeater
  8. DataView dv = new DataView(dt);
  9. //DataRow initaliseren
  10. DataRow dr;
  11.  
  12. foreach (string strPhoto in aryPhotos)
  13. {
  14. //voor elke naam in de array een nieuwe rij aanmaken
  15. dr = dt.NewRow();
  16. //in de eerste kolom (beginnen tellen bij 0), er is maar 1 kolom trouwens de waarde zetten
  17. dr[0] = strDirAlbum + strPhoto.Substring(strFileSystemPath.Length + 1);
  18. //rij toevoegen aan DataTable
  19. dt.Rows.Add(dr);
  20. }
  21.  
  22.  
  23. //Source van Repeater instellen
  24. imageRepeater.DataSource = dv;
  25. imageRepeater.DataBind();


Het kan korter zodat je niet het DataRow-object elke keer moet gaan toepassen:

  1. string[] aryPhotos = Directory.GetFiles(strFileSystemPath, "*.jpg");
  2. DataTable dt = new DataTable();
  3. dt.Columns.Add(new DataColumn("Image", System.Type.GetType("System.String")));
  4. DataView dv = new DataView(dt);
  5.  
  6. foreach (string strPhoto in aryPhotos)
  7. dt.Rows.Add(dt.NewRow()[0] = strDirAlbum + strPhoto.Substring(strFileSystemPath.Length + 1));
  8.  
  9. imageRepeater.DataSource = dv;
  10. imageRepeater.DataBind();


En dan de aspx-pagina:
  1. <asp:Repeater ID="imageRepeater" runat="server">
  2. <ItemTemplate>
  3. <asp:Image ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Image") %>' runat="server" />
  4. <br />
  5. </ItemTemplate>
  6. </asp:Repeater>


Martijn2008 – 21/01/2010 19:11
Brilliant !

Gesponsorde links

Dit onderwerp is gesloten.
Actieve forumberichten:

© 2002-2012 Sitemasters.be - Regels - Gehost door: Vircon - Laadtijd: 0.084s