ajaxToolkit: CollapsiblePanelExtender behoudt geen uitgevouwen/samengevouwen status op AJAX UpdatePanel refresh

Ik heb een ajaxToolkit: CollapsiblePanelExtender samen met twee asp: UpdatePanels die het bestuurt (één paneel breidt het andere paneel uit wanneer erop wordt geklikt).

Werkt prima totdat ik een AJAX-update uitvoer vanaf een timer die begint. De pagina wordt bijgewerkt ... en de CollapsiblePanelExtender stort in :-P

Iedereen weet hoe je deze controle kunt krijgen om de status van het paneel dat wordt uitgebreid te behouden?

0

2 antwoord

Ik herinner me dat ik tegen dit exacte probleem aanliep.

CollapsiblePanelExtender heeft een eigenschap, ClientState, die niet lijkt te worden gevolgd en onderhouden in ViewState.

U zou in staat moeten zijn om de waarde in een HiddenField (of ViewState of Sessie, indien gewenst) handmatig te volgen en te behouden en de CPE.ClientState naar die waarde terug te zetten met de AJAX-update.

UPDATE
Found a resource that suggests that you simply need to set both Collapsed and ClientState properties. http://weblogs.asp.net/ashicmahtab/archive/2008/11/21/act-collapsiblepanelextender-how-to-collapse-expand-programmatically.aspx

3
toegevoegd
Dat is vreselijk ... het betekent in feite dat er een fout zit in de besturing, dus het houdt Viewstate niet bij. Ik dacht erover om iets vergelijkbaars te doen met behulp van een jQuery-paneel als de CPE-besturing niet zo goed werkte :-P
toegevoegd de auteur kenyee, de bron
FWIW, ik heb uiteindelijk jQuery gebruikt om de statuswijzigingen te pakken en een verborgen veld bij te werken dat vervolgens werd doorgegeven in de ajax POST, waarna de code het veld decodeerde (een CSV-lijst met uitgebreide secties) en de clientstatus correct instelde). Grote hack voor iets dat moet worden opgelost in asp.net IMHO ...
toegevoegd de auteur kenyee, de bron

Ik ben dit tegengekomen in een andere omstandigheid ...

  1. Paneel is samengevouwen Tijdtest en een gedeeltelijke postback begint
  2. Gebruiker vergroot paneel terwijl postback wordt uitgevoerd
  3. Gedeeltelijke postback eindigt en de status van het panel is teruggestuurd naar "samengevouwen" omdat viewstate is onderhouden - dat is het net teruggekeerd naar waar het was aan het begin van de gedeeltelijke postback.

Hoe je dit wilt aanpakken, hangt af van je omstandigheden, maar in mijn geval heb ik het asynchroon annuleren postback wanneer de gebruiker een paneel uitvouwt of samenvouwt. Aangezien het een timer is die de huidige waarden om de paar seconden actualiseert, zal hij sowieso snel weer opnieuw werken, dus ik kan er een "verliezen".

U kunt ook de functie uitvouwen/samenvouwen uitschakelen voor de duur van de postback met behulp van de add_expanding en add_collapsing -gebeurtenissen van het paneel en Sys.WebForms.PageRequestManager.getInstance (). Get_isInAsyncPostBack() controleren.

0
toegevoegd