Hej! Använd kontrollen ImageButton där du kan använda metoden OnClick för att hantera det event som uppstår när man klickar på bilden. jag har nu laggt in detta men har lite problem Så här på den raka armen så borde du inte skapa ett objekt för ImageButton först och lägga till attribut så som imageUrl, OnClick etc för att sedan lägga ImageButton-Objektet som en child till editcell? hmm... jag får prova... tänkte inte på den lösningen... ok..det verkar ju fungera, men när jag klickar på imagebuttonen så laddas bara sidan om. Jag har skapat en metod som jag skall kalla på men sidan laddas bara om. Jag använder dock en if(Page.IsPostBack == false) sats i pageload . har det med det att göra ? Hej Tyronne... Kalla på en metod igenom klick på bild
i en cell har jag lägger jag till en bild som är en länk. När man klickar på bilden så är det mening att man skall komma till ett editeringsläge på den posten man klickar. I min lösning har jag laggt editeringen i en panel som skall visas när man vill klicka på editeringsbilden.
Jag har byggt min tabell dynamiskt från codebehide
ex på cell
<code>
//Editera
TableCell editscell = new TableCell();
editscell.Width = 30;
editscell.Text ="";
editscell.HorizontalAlign = HorizontalAlign.Center;
row.Cells.Add(editscell);
</code>
min fråga är hur jag kan få att när man klickar på bilden så kallas en metod som heter EditSubscr i stället för att den går till urlen i a href. Jag måste få med meig ID så jag vet vilken post jag skall editera.
/TyronneSv: Kalla på en metod igenom klick på bild
T.ex.
<asp:ImageButton ImageUrl="Image/edit_smal.gif" Runat="server" OnClick="Metod" />
Det finns nästan alltid lättare inbyggda lösningar i olika kontroller. Kan rekommendera www.msdn.com
där du kan söka igenom alla kontroller och metoder som .net framework stödjer.
I detta fall så var det ImageButton.
MVH
RobbanSv: Kalla på en metod igenom klick på bild
här är koden för raden
<code>
//Rditera
TableCell editscell = new TableCell();
editscell.Width = 30;
editscell.Text ="<asp:ImageButton runat='server' ImageUrl='Image/edit_smal.gif' OnClick='EditSub(" + xID + ")'/></td>";
row.Cells.Add(editscell);
</code>
Bilden visas inte samt att det inte verkar som att metoden kallas när man klickar på bilden.Sv:Kalla på en metod igenom klick på bild
ImageButton imgButton = new ImageButton();
TableCell editcell = new TableCell();
imgButton.Attributes.Add("onClick", "EditSub(2)");
imgButton.ImageUrl="Image/edit_smal.gif "
editcell.Controls.Add(imgButton);
Något liknande borde fungera.
MVh
RobertSv: Kalla på en metod igenom klick på bild
höres
/tyronneSv:Kalla på en metod igenom klick på bild
Jag vill i min edit metod skicka in ett id nummer så jag vet vilken post som skall editeras.
här är koden
<code>
//Editera
ImageButton img = new ImageButton();
img.ImageUrl= "Image/edit_smal.gif";
img.Attributes.Add("onClick", "EditSubcr("+ xID+ ")");
TableCell editscell = new TableCell();
editscell.Width = 30;
editscell.HorizontalAlign = HorizontalAlign.Center;
editscell.Controls.Add(img);
row.Cells.Add(editscell);
</code>
/tyronneSv: Kalla på en metod igenom klick på bild
Så som du gör nu så säger du att när en användare klickar på bilden så ska en JavaScript-funktion som heter EditSubcr köras, och om jag har förstått dig rätt så är det inte det du vill?
Du kan testa att göra nåt sånt här istället:
<code>
ImageButton img = new ImageButton();
img.ImageUrl = "Image/edit_smal.gif";
img.CommandArgument = "Skriv ut det här";
img.Click += new System.Web.UI.ImageClickEventHandler(this.ImageButtonClick);
TableCell editcell = new TableCell();
editcell.Controls.Add(img);
TableRow row = new TableRow();
row.Cells.Add(editcell);
Table1.Rows.Add(row);
</code>
Om du istället för att skicka med "Skriv ut det här" (som jag gör) så kan du skicka med det som du kallar xID i din kod. Sen har jag en funktion som anropas när man klickar på bilden, där kommer du åt värdet i xID via knappens CommandArgument.
<code>
private void ImageButtonClick(object sender, System.Web.UI.ImageClickEventArgs e)
{
ImageButton btn = (ImageButton)sender;
Response.Write(btn.CommandArgument);
}
</code>
Hoppas det verkar förståeligt, osäker på om jag uttryckt mig så tydligt... Annars får du återkomma...