FedorovMedlem sedan dec. 20042 inlägg Jo, min plan är att loopa igenom alla bilder i en mapp och skapa en ImageButton för varje bild. När användaren sedan klickar på en bild(dvs ImageButton) så ska sökvägen till denna sparas i en databas. Mitt problem nu är att min funktion för att spara bilderna i databasen inte anropas när användaren klickar på en bild. Hur ska jag få detta att fungera?
Hur får jag dessutom ut sökvägen till bilden så att jag kan spara denna i databasen?
Min kod:
private void Page_Load(object sender, System.EventArgs e)
{
if(Page.IsPostBack == false)
this.GetPictures();
}
private void GetPictures()
{
DirectoryInfo di = new DirectoryInfo(Server.MapPath("images/"));
foreach(FileInfo fi in di.GetFiles("\*.jpg"))
{
ImageButton imgbtnPic = new ImageButton();
imgbtnPic.ImageUrl = fi.FullName;
imgbtnPic.Width = Unit.Pixel(290);
imgbtnPic.Height = Unit.Pixel(290);
imgbtnPic.Command +=new CommandEventHandler(SaveImage);
lblPics.Controls.Add(imgbtnPic);
}
}
public void SaveImage(object Sender, CommandEventArgs E)
{
//Denna funktion anropas inte.. =( :P
erkaMedlem sedan dec. 19996 522 inlägg vad är lblPics ? Lägger du till imagebuttons i en Label, varför inte en placeholder istället. Eftersom en imagebutton orsakar en postback, så blir dina imagebuttons endast skapade första gången sidan besöks, de måste skapas igen efter en postback då de är skapade dynamiskt.
Angående hur du ska få ut sökvägen, lägg till ett CommandArgument till varje imagebutton som är sökvägen. Sökvägen får du ut med fi.DirectoryName;, ska du ha namnet på filen också får du ut det med fi.FullName;
detta fungerar utmärkt
private void Page_Load(object sender, System.EventArgs e)
{
this.GetPictures();
}
private void GetPictures()
{
try
{
DirectoryInfo di = new DirectoryInfo(Server.MapPath("Images/"));
foreach(FileInfo fi in di.GetFiles("*.bmp"))
{
ImageButton imgbtnPic = new ImageButton();
imgbtnPic.ImageUrl = fi.FullName;
imgbtnPic.Width = Unit.Pixel(60);
imgbtnPic.Height = Unit.Pixel(60);
imgbtnPic.CommandArgument = fi.DirectoryName;
imgbtnPic.Command +=new CommandEventHandler(SaveImage);
PlaceHolder1.Controls.Add(imgbtnPic);
}
}
catch(Exception ex)
{
Literal ltrError = ex.Message.ToString();
PlaceHolder1.Controls.Add(ltrError);
}
}
public void SaveImage(object Sender, CommandEventArgs E)
{
string picturePath = E.CommandArgument.ToString();
Response.Write(picturePath+"<br>");
}