Attributes.Add i wywolanie funkcji po stronie serwera

0

Witam,

probuje napisac stronke (mocne slowo ;)) w asp.net na ktorej bedzie jakas kontrolka (np. button) i obrazek. Po najechaniu myszka na kontrolke i opuszczeniu jej obszaru obrazek obok zmienialby sie na inny, po ponownym najechaniu i opuszczeniu zmienialby sie znowu na inny itd. (kilka takich zmian, np. 10)

Wszystko by bylo ok gdyby nie to, ze nie moge wykorzystac javascriptu :) staralem sie zrobic to za pomoca attributes.add jednak najpierw wywolywana jest funkcja i na stale jest przypisywana zmiana, czyli pierwszy obrazek z listy ;)

Prosilbym o pomoc :)
Pozdrawiam

0

Pokaż kod.

0
protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ViewState["pic"] = 1;
            }
            Button1.Attributes.Add("onmouseover", "Pic.src='"+ChangePic()+"'");
        }
        private string ChangePic()
        {
            int count = (int)ViewState["pic"];
            string pic ="";
            switch (count)
            {
                case 1: obrazek= "pic1.png"; break;
                case 2: obrazek= "pic2.png"; break;
                ... itd
            }
            count=++count%ilosc_obrazkow+1;
            ViewState["pic"] = count;
            return pic;
        } 

No i teraz musze wywolac postback aby Pic.src sie zaktualizowalo, ale nie mam pojecia jak to zrobic nie uzywajac javascriptu

a moze istnieje jakis inny sposob na zrobienie tego?

0

Po pierwsze, to kontrolki ASP.NET bez JS nie działają. Po drugie, to i tak używasz JS tutaj: Button1.Attributes.Add("onmouseover", "Pic.src='"+ChangePic()+"'");

Tak więc, co to dokładnie znaczy "nie moge wykorzystac javascriptu"? Nie możesz napisać żadnej linijki kodu w tym języku, przeglądarka nie obsługuje czy jeszcze coś innego?

0

Wiem o tym, ze .net sam w sobie uzywa javascriptu, jednak ja nie moge uzyc tego jezyka :) tak samo nie moge uzyc klasy Response

0

Tzn. wykładowca zadał Ci takie zadanie, że tego nie możesz zrobić?

Bo nie da się wykonać tego zadania bez użycia JS, a konkretnie wykrycia zdarzenia onmouseover.

0

ale zdarzenie onmouseover jest obslugiwane :) ogolnie to dziala mi to z tym, ze tylko dla pierwszego obrazka. Podczas ladowania strony uruchamiana jest funkcja changePic() i zostaje na stale przypisana nazwa obrazka, dlatego mysle w jaki sposob zrobic postback podczas wychodzenia z obszaru obrazka (lub cos w tym stylu) programowo z poziomu kodu asp

0
sql napisał(a)

dlatego mysle w jaki sposob zrobic postback podczas wychodzenia z obszaru obrazka (lub cos w tym stylu) programowo z poziomu kodu asp

To najpierw zastanów się, skąd serwer miałby wiedzieć, co Ty zrobisz w swojej przeglądarce?

0

A napisz dokładną treść zadania jakie dostałeś. Może masz użyć ajax. Sam ajax używa js, ale faktycznie ty kodując nie piszesz jawnie żadnej linijki w js.

0

ok, a jak osiagnac taki rezultat z js albo programowo? ;)

0

mozesz uzyc __doPostback() by wywolac postback'a w onmouseover czyli:

Button1.Attributes.Add("onmouseover", "__doPostBack()");

Tu masz nieco wiecej o tym: http://www.xefteri.com/articles/show.cfm?id=18

Np przez __EventTarget mozesz przekazac sobie nazwe metody i pozniej sprawdzajac Request.Form["__EventTarget"] odpalic swoj wlasny kod do obslugi zdarzenia zmiany obrazka.

Dzieki temu masz pelnego postback'a i programową zmiane obrazka przez przeladowanie strony.

Swoja droga to totalnie glupie rozwiazanie, bo takie rzeczy robi sie za pomoca javascript'u, a ewentualna komunikacje z serwerem zalatwia np. ajax'em. No ale coz, wykladowcy lubia wymyslac niepraktyczne rzeczy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1