login  Naam:   Wachtwoord: 
Registreer je!
 Forum

ASP.net repeater gebruiken voor webgallery (Opgelost)

Offline Martijn2008 - 21/01/2010 16:02
Avatar van Martijn2008PHP beginner 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
Offline Abbas - 21/01/2010 17:03
Avatar van Abbas Gouden medaille

Crew .NET
  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();
Offline Martijn2008 - 21/01/2010 17:27
Avatar van Martijn2008 PHP beginner Cool, alleen nu vraag ik me nog af hoe ik de data bind in de view(ASP.net)?
Offline Abbas - 21/01/2010 18:09
Avatar van Abbas Gouden medaille

Crew .NET
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>
Bedankt door: Martijn2008
Offline Martijn2008 - 21/01/2010 19:11
Avatar van Martijn2008 PHP beginner Brilliant !
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.178s