Witam
Za żadne skarby nie mogę poradzić sobie z jedną zupełnie niezrozumiałą dla mnie rzeczą.
Mam GridView, mam w nim kilka LinkButtonów, do nich mam przypisaną metodę zdarzeniową select. Chodzi o to, że po kliknięciu w danego linkbuttona, pojawiają się imagebuttony, następnie po kliknięciu na imagebutton ma uruchamiać się metoda zdarzeniowa (a nie uruchamia).
Zdjęcia którę są pokazywane są z określonego folderu znajdującego się w folderze Uploads. Wygląda to tak:
protected void Select(object sender, EventArgs e)
{
foreach (string strfile in System.IO.Directory.GetFiles(Server.MapPath("~/Uploads/" + (sender as LinkButton).CommandArgument)))
{
ImageButton imageButton = new ImageButton();
System.IO.FileInfo fi = new System.IO.FileInfo(strfile);
imageButton.ImageUrl = "~/Uploads/" + (sender as LinkButton).CommandArgument + "/" + fi.Name;
imageButton.Width = Unit.Pixel(50);
imageButton.Height = Unit.Pixel(50);
imageButton.Style.Add("padding", "5px");
imageButton.Click += new ImageClickEventHandler(imageButton_Click);
Panel1.Controls.Add(imageButton);
list.Add(imageButton);
}
}
metoda zdarzeniowa:
public void imageButton_Click(object sender, ImageClickEventArgs e)
{
Response.Redirect("WebForm2.aspx?ImageURL=" +
((ImageButton)sender).ImageUrl);
}
Jeśli wnętrze metody Select a przede wszystkim kod:
imageButton.Click += new ImageClickEventHandler(imageButton_Click);
będzie zawarty w Page_Load, oczywiście bez
(sender as LinkButton).CommandArgument
tylko z jakąś nazwą prawdziwą folderu, to wszystko działa.
Nie rozumiem, przy innych aplikacjach nie natknąłem się na to, aby coś takiego:
imageButton.Click += new ImageClickEventHandler(imageButton_Click);
musiało być tylko w Page_Load. Oczywiście przez to, że działa to tylko w Page_Load, nie mogę (chyba, że mogę ale tego nie widzę?) przypisać
sender as LinkButton
a wiec nie moge tego tak oprogramowac, zeby wyswietlilo sie zawartosc tego folderu, zaleznie w ktory linkButton kliknę.
Jak sobie z tym poradzić?