ASP.net __doPostBack is mijn JavaScript aan het vernieuwen

It seems that one of my __doPostBack methods (on a LinkButton) is refreshing the JavaScript on my page... which is causing some of my <div>s to be hidden... any advice on how I can avoid this?

Code:

Refresh
0
U kunt dit voorkomen door helemaal geen -bediening te gebruiken.
toegevoegd de auteur Raynos, de bron
wat is s ? En wat is _lnkRefreshImage_Click ?
toegevoegd de auteur JonH, de bron

1 antwoord

Javascript wordt in de browser uitgevoerd, maar de __ doPostBack -methode zorgt ervoor dat de pagina opnieuw op de server wordt geplaatst - u kunt niet verwachten dat de Javascript de status behoudt wanneer dit gebeurt, niet zonder "help".

Je hebt verschillende opties:

  • Wijzig de elementen div om van server te veranderen en hun zichtbaarheid aan de serverzijde in te stellen
  • Zorg voor een verborgen invoer die de zichtbaarheidsstatus van de verschillende div s bevat en in uw javascript-query bij het laden van de pagina om de zichtbaarheid in te stellen
  • Gebruik geen LinkButton maar een aantal markup aan de kant van de client zodat er geen postback optreedt
  • Gebruik AJAX om met de server te communiceren
3
toegevoegd
optie 1 en 2 zijn hacks. Optie 4 is gebruik ajax in plaats van __ doPostBack
toegevoegd de auteur Raynos, de bron
Bedankt Oded. __doPostBack vernieuwt de pagina niet volledig ... alleen het updatepaneel en (blijkbaar) het javascript. Kan ik een verborgen invoerveldgebeurtenis nog steeds gebruiken als het geen volledige vernieuwing is?
toegevoegd de auteur Adam Storr, de bron
@Oded - Dat is precies wat er gebeurt ... mijn elementen verliezen zichtbaarheid.
toegevoegd de auteur Adam Storr, de bron
Ik verwijderde de LinkButton en gebruikte een standaard <input> -veld met een klikgebeurtenis om de postback uit te voeren en de zichtbaarheid te bevestigen ... maar dat werkte niet.
toegevoegd de auteur Adam Storr, de bron
@AdamStorr - Ik begrijp het, u gebruikt AJAX. Een verborgen veld zal nog steeds werken. Hoewel ik verbaasd ben dat de Javascript is gereset. Bedoel je dat de elementen worden herladen zonder dat de zichtbaarheid is ingesteld door javascript?
toegevoegd de auteur Oded, de bron
@AdamStorr - In dat geval moet u de zichtbaarheidscode opnieuw toepassen nadat de AJAX is geactiveerd, meer niet. Voeg eventueel een oproep toe aan dit stukje code aan het einde van het updatepaneel (niet zeker of dat werkt).
toegevoegd de auteur Oded, de bron
@AdamStorr - Je doet een volledige postback, dus dat is wat ik zou verwachten.
toegevoegd de auteur Oded, de bron