webForumDet fria alternativet
Logga in / Bli medlem

Problem med ImageButtons

.NET

1 svar · 233 visningar · startad av Fedorov

Medlem sedan dec. 20042 inlägg
Trådstart#1

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
Medlem sedan dec. 19996 522 inlägg
#2

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>");
		}
375 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
121 ms — deklarationer (db)
127 ms — hämta statistik (db)
124 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)