J'ai du JavaScript pour faire basculer une liste déroulante dans une page ASP.NET, qui est appelée lorsque je clique sur un bouton. J'ai environ 4 à 5 paires liste déroulante/bouton basculant. Chaque bouton bascule la propriété d'activation/désactivation de la liste déroulante associée.
J'enregistre la valeur de la propriété "disabled" d'un champ caché pour suivre l'état "disabled" d'un bouton entre les postbacks, avec le javascript suivant
function disableButton(dropdownID)
{
var element = document.getElementById(dropdownID); // get the DOM element
var trackingField = document.getElementById("_tracking" + dropdownID);
if (element) {
trackingField.value = element.disabled;
//sending the element.disabled instead of "!element.disabled" since we are
//setting dropdownlist.enabled property so is already negated for us
element.disabled = !element.disabled; // invert the boolean attribute
}
return false; // prevent default action
}
HTML
<input type="hidden" name="_trackingdropdownlist" id="_trackingdropdownlist" value="true" />
Code
if (Request.Params[_trackingdropdownlist] != null)
{
bool val = true;
bool.TryParse(Request.Params[_trackingdropdownlist], out val);
dropdownlist.Enabled = val;
}
Ainsi, l'état de la liste déroulante est maintenu lors du premier aller-retour du postback, mais après cela, toutes les listes déroulantes sont activées. Qu'est-ce qui ne va pas ici ?
*Remarque : la valeur par défaut de la propriété activée sur ces listes déroulantes est false.