Problemer med en ArrayList i samspil med et galleri
Hej,Jeg har fået et problem, men min Arraylist, jeg bruger den i forbindelse med at den skal holde filnavne på de billeder der ligger i mit galleri, men når jeg beder den om at køre hele min mappe igennem, så bliver den ved med at overskrive de andre værdier i arraylisten, hvilket resultere i at jeg får det samme billede vist 50 gange.
Jeg kan ikke umiddelbart gennemskue hvad jeg gør forkert.
--- Koden ----
Først har jeg en side der hedder Image.Aspx, den får sine værdier fra en objectdatasource
<ItemTemplate>
<table>
<tr> <%# DataBinder.Eval ( Container.DataItem, "url" )%></tr>
<tr> <%# DataBinder.Eval ( Container.DataItem, "img" )%></tr>
</table>
</ItemTemplate>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<SelectedItemStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<AlternatingItemStyle BackColor="White" ForeColor="#284775" />
<ItemStyle BackColor="#F7F6F3" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
</asp:DataList><br />
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetData"
TypeName="myData"></asp:ObjectDataSource>
MyData Kommer fra en klase der ligger i en fil der hedder billeder.cs
Denne ser sådan ud:
public class billeder
{
private string _url = null;
private string _img = null;
public string url
{
get { return _url; }
set { _url = value; }
}
public string img
{
get { return _img; }
set { _img = value; }
}
public billeder()
{
//
// TODO: Add constructor logic here
//
}
}
public class myData
{
const int maxWidth = 100;
const int maxHeight = 100;
public myData()
{ }
public ICollection GetData()
{
ArrayList list = new ArrayList();
billeder row = new billeder();
int imgHeight;
int imgWidth;
foreach (string s in Directory.GetFiles(System.Web.HttpContext.Current.Server.MapPath
("Galleri/"), "*.jpg"))
{
System.Drawing.Image currentImage = System.Drawing.Image.FromFile(s);
imgHeight = currentImage.Height;
imgWidth = currentImage.Width;
if ((imgWidth > maxWidth) || (imgHeight > maxHeight))
{
int deltaWidth = imgWidth - maxWidth;
int deltaHeight = imgHeight - maxHeight;
double scaleFactor;
if (deltaHeight > deltaWidth)
{
scaleFactor = Convert.ToDouble(maxHeight) / imgHeight;
}
else
{
scaleFactor = Convert.ToDouble(maxWidth) / imgWidth;
}
imgWidth = Convert.ToInt32(imgWidth * scaleFactor);
imgHeight = Convert.ToInt32(imgHeight * scaleFactor);
row.img = "<a href=image.aspx?id=Galleri/"+Path.GetFileName(s)+">Vis</a>";
row.url = "<img src=Galleri/" + Path.GetFileName(s) + " height=" + imgHeight + " width=" + imgWidth +"/>";
list.Add(row);
}
}
return list;
}
}
Det er så den der hedder list der er min arraylist, den bliver fyldt op via min properties. Den underlige er bare at når den beder om at add en ny Row, så gør den også det, men den ændre alle andre elementer i arraylisten til det samme.
Er der nogen der har et forslag til hvordan man løser dette ?
mvh Brian
