ASP.NET C# - ImageButton   zodpovězená otázka

C#, ASP.NET WebForms

Ahoj. Mám kód, který mi zindexuje obsah složky, a podle počtu obrázků, vytvoří na stránce ImageButtoy:

foreach (string fileName in Directory.GetFiles(Server.MapPath("~/Photos")))
        {
            if (fileName.Remove(0, fileName.Length - 3) == "png")
            {
                ImageButton PhotoButton = new ImageButton();
                PhotoButton.AlternateText = "";
                PhotoButton.CssClass = "PhotoBtn";
                Panel002_003.Controls.Add(PhotoButton);
            }
        }

ale potřeboval bych, aby se při kliknutí na nějaký vygenerovaný ImageButton klikne, tak aby se v prvku <asp:Image id="PhotoView"> změnila ImageUrl na url, které .. nevím jak to popsat, omlouvám se. Nemám s tím ještě moc zkušeností a zapasím s tím už hodně dlouho.

Zkrátka mám fotogalerii. Ta mi zindexuje obsah složky kde mám fotky. A za každou fotku se na stránce přidá imagebutton. Ten má nastaveno ImageUrl na obrázek v příslušné složce jejiž obsah se indexuje. A já chci, aby když se klikne na nějaký ten ImageButton tak aby se v prvku <asp:Image id="PhotoView" runat="server" ImageUrl="" /> změnila ImageUrl na url k obrázku, který je zobrazen v ImageButtonu.

Prosím pokud alespoň tusíte, poraďte....

Díky moc za odpovědi

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Dynamicky vytvářeným komponenám musíte kódem nastavit obsluhu události OnClick. Během nastavování vlastností tlačítka přidejte ještě tento kód:

    PhotoButton.Command += new CommandEventHandler(PhotoButton_Command);
    PhotoButton.CommandName = "Url";  // nějaké jméno příkazu, které si vymyslíte
    PhotoButton.CommandArgument = url;  // URL adresa, kterou nastavíte do obrázku

Tady je pak procedura, která událost Command obslouží.

    
    public void PhotoButton_Command(object sender, CommandEventArgs e)
    {
        // tady proveďte to, co potřebujete udělat
        // URL, kterou chcete vložit, najdete v e.CommandArgument
    }

Druhou možností je použít třeba komponentu Repeater a komponenty, které zbytečně složitě generujete kódem, nechat vygenerovat komponentou Repeater, viz poslední díl tutoriálu o ASP.NET na tomto serveru.

Jinak metoda GetFiles má ještě druhý parametr, kde udáváte příponu souboru, můžete tam dát hodnotu "*.png", a pak nemusíte mít uvnitř for cyklu tu podmínku, která stejně filtruje špatně (soubor.jpng projde a na souboru ab to spadne). Když už chcete kontrolovat, jestli nějaký řetězec něčím končí, můžete použít funkci EndsWith (třeba if (soubor.EndsWith("ab")) ...).

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback