PDA

Volledige versie bekijken : RadioButtonGroup references


lordbeezdje
%Europe/Berlin %396 %2007, 10:30
Nou heb ik zelf een probleempje.

Ik zal het proberen zo duidelijk mogelijk uit te leggen.

Ik ben een site aan het maken, waar users niet zelf hun profiel mogen wijzigen. Deze site is namelijk gekoppeld aan de administratie van een redelijk grote school, dus het is niet de bedoeling dat er vanalles aangepast kan worden.

Wat users wel kunnen doen, is een verzoek tot wijziging indienen via hun profiel-pagina.
De administratie van die school kan dan, vanuit de site zelf, een verzoek goed- of afkeuren.

Op die admin-pagina wordt een lijst gegenereerd van users die een wijziging hebben aangevraagd, met per user de aangevraagde wijziging(en). Per user is er een RadioButtonGroup met de opties 'alles goedkeuren', 'alles afkeuren', 'per item keuren' en 'negeren', en per item is er een RadioButtonGroup met de opties 'goedkeuren', 'afkeuren' en 'negeren'.

Het probleem is dus als volgt:

Omdat ik uiteraard met één class werk die voor alle users gelijk is, en één class die voor alle items gelijk is, moet ik de namen van de respectievelijke RadioButtonGroup per RadioButton aanpassen.

for(var i:uint=0; i<_users.length; i++) {
var userRequest:UserRequest = new UserRequest(i, _users[i].requestDetails);
with(userRequest) {
radio_accept.groupName = 'group_user_'+i;
radio_reject.groupName = 'group_user_'+i;
radio_perItem.groupName = 'group_user_'+i;
radio_ignore.groupName = 'group_user_'+i;
y = userRequestContainer.height;
}
userRequestContainer.addChild(userRequest);
}

Per user worden dan op een soortgelijke manier de namen van de RadioButtonGroups geset.

Dit werkt in eerste instantie prima, omdat deze namen netjes door flash worden geregistreerd in het static gedeelte van de RadioButtonGroup class.

Deze container wordt geleegd als de pagina verlaten wordt, of als de admin op 'Verwerk wijzigingen' heeft geklikt.

Echter, als een admin op 'Verwerk wijzigingen' heeft geklikt, of de pagina verlaat en weer opent, dan wordt de hele lijst opnieuw gemaakt.

Het probleem zit er dus in het erop lijkt dat flash de references in het static gedeelte van de RadioButtonGroup class niet verwijdert als ik alle items van die group van de stage heb verwijderd. (Ja, ik heb alle references naar de radio buttons zelf, en alle event listeners ook verwijderd.) Ook is er geen unregister- of delete-achtige functie voor die references. Als de lijst dus voor de tweede keer gemaakt is, met voor de RadioButtons dezelfde waardes voor de groupName property, kan flash die RadioButtonGroup niet meer vinden. Het lijkt er dus op dat ik de references in de RadioButtonGroup class ook niet kan overschrijven.

Heeft iemand hier al mee te maken gehad, en zo ja, heeft die er ook een oplossing voor gevonden? De flash help is hier iig niet erg behulpzaam, omdat er geen documentatie in staat over deze of een vergelijkbare situatie.

Bij voorbaat dank,
Vincent

lordbeezdje
%Europe/Berlin %410 %2007, 10:51
Mijn excuses, ik heb het probleem reeds opgelost.

In plaats van enkel de groupname te setten (wat de RadioButtonGroup reference niet overschrijft), had ik eerst een nieuwe RadioButtonGroup instance moeten maken (wat de RadioButtonGroup reference wel overschrijft), en die instance moeten toewijzen aan de 'group' property van de RadioButton.

for(var i:uint=0; i<_users.length; i++) {
var userRequest:UserRequest = new UserRequest(i, _users[i].requestDetails);
var userGroup:RadioButtonGroup = new RadioButtonGroup('group_user_'+i);
with(userRequest) {
radio_accept.group = userGroup;
radio_reject.group = userGroup;
radio_perItem.group = userGroup;
radio_ignore.group = userGroup;
y = userRequestContainer.height;
}
userRequestContainer.addChild(userRequest);
}


works like a charm