jQuery slider og asp.net postback

Tags:    jquery asp.net

<< < 12 > >>
Jeg har en jQuery slider som viser / fjerner min searchoptions <div>:

Fold kodeboks ind/udJScript kode 


Mit problem er, at jeg har et asp.net gridview på samme side med paging og hver gang man skifter side i det gridview, så udfører den selvfølgelig $(".searchoptions").show(); igen, selvom brugeren har skjult den.

Hvordan får jeg den til at huske om min <div> er skjult ved sideskift? Jeg har kigget lidt på jquery.com og har fundet noget med event.preventDefault(), men ved ikke om den kan løse mit problem og hvordan.



11 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 12 karma
Sorter efter stemmer Sorter efter dato
Problemet er jo som sagt, at JavaScript altid læses hver gang en side indlæses.

Du kan måske bruge en af tre løsninger:

1. Du kan prøve noget hack-slash på window.name:
http://code.google.com/p/cometdim/source/browse/trunk/src/main/webapp/jquery/jquery.session.js?r=2

2. Ellers er det nok cookies du skal bruge.
http://www.electrictoolbox.com/jquery-cookies/

3. På server-siden bestemmer du at, når du har søgeresultater, undlades skrivning af koden: "$(".searchoptions").show();"


event.preventDefault() bruges til at stoppe de normale events som sker når du f.eks. klikker på et link, på et html-element eller flytter musen.



Indlæg senest redigeret d. 11.04.2012 18:21 af Bruger #10216
Du kan bruge hash og gøre som følgende.

Fold kodeboks ind/udJScript kode 


Dog skal du nok ud af slideToggle da hashen skal fjernes igen når den bliver lukket.



Indlæg senest redigeret d. 11.04.2012 18:22 af Bruger #15754
du kan altså let sætte cookies med javascript:

http://www.electrictoolbox.com/jquery-cookies/

formoder at din "show_hide" er knappen til at skjule og vise med.

(ikke testet)
Fold kodeboks ind/udJScript kode 


Jeg vil til enhver tid holde javascript uden for mit backend

EDit glemte lige en || cookie == null





Indlæg senest redigeret d. 12.04.2012 15:39 af Bruger #5789
med sideskifte ... mener du dermed, at der kommer en ny request. Eller skre sideskift på den samme side?



Indlæg senest redigeret d. 11.04.2012 18:15 af Bruger #17081
Et sideskifte i et gridview gøres med et javascriptkald som autogenereres af asp.net:

Fold kodeboks ind/udCSharp kode 
og laver en ny request.



Indlæg senest redigeret d. 11.04.2012 18:19 af Bruger #9814
Damn, jeg er en jQuery spa.... :-( Jeg kan godt li' metoden med hash som i nævner og jeg har også forsøgt med din kode MB. Men der er desværre ingen forskel.

Jeg kan godt se, at den kortvarigt sættes til #open når jeg klikker på mit link:

Fold kodeboks ind/udHTML kode 


Måske må jeg prøve med cookie metoden som Michael nævner.




Prøv og gør sådan her så default eventet ikke sker og overskriver din hash.

Fold kodeboks ind/udJScript kode 




Desværre ingen forskel, men tak for forsøget. Hvorfor tjekker du på if(window.location.hash != "open") og ikke if(window.location.hash != "#open")? Det gør nu ikke nogen forskel, men bare en undren?



Hmm nok en lille stavefejl :)



Jeg troede der var en dybere mening med det :lol:

*edit*

Nå, det blev til den anden bedste løsning og ikke det jeg helst ville.

I Page_Load metoden bygger jeg jQuery scriptet op, så den gemmer div med søgefelterne ($("".searchoptions"").hide();) hvis det er postback og der var et søgeresultat. Ellers vises den med $("".searchoptions"").show();

Så er jeg sikker på, at den altid er gemt væk. Men jeg tager så ikke højde for dens aktuelle state.

Men det fungerer som nødløsning :-)



Indlæg senest redigeret d. 11.04.2012 21:03 af Bruger #9814
<< < 12 > >>
t