36 votes

rendre l'élément de liste déroulante non sélectionnable

J'ai une liste déroulante qui a plusieurs options pour générer des rapports. En fonction du type de compte, l'utilisateur dispose de certaines options qui devraient être visibles mais non sélectionnables (pour les inciter à se mettre à niveau).

Je me demandais si quelqu'un savait comment y parvenir.

Les autorisations sont déjà en place, j'ai juste besoin d'aide pour rendre certains éléments non sélectionnables.

Toute aide serait très appréciée.

Shawn

66voto

Adam Fox Points 643

Vous ne savez pas si vous êtes toujours à la recherche d'une réponse à cela?

Mark Redman réponse est grand si vous pouvez définir la liste de sélection dans la page aspx, cependant, si vous liez la liste déroulante de façon dynamique, évidemment, vous ne pouvez pas.

J'ai eu du succès en utilisant les éléments suivants pour obtenir le résultat que vous recherchez (pas sûr de la pleine prise en charge du navigateur, mais travaille dans les nouvelles versions de IE)

foreach ( ListItem item in dropdownlist.Items )
{
    if ( [item should be disabled condition] )
    {
        item.Attributes.Add( "disabled", "disabled" );
    }
}

Cela rendra votre désactivé éléments grisés.

19voto

Mark Redman Points 10816

Vous pouvez désactiver une balise <option> dans un html <select>

Voir: http://www.htmlref.com/reference/appa/tag%5Foption.htm

dans asp.net:

 <asp:DropDownList ID="MyDropDownList" runat="server">
        <asp:ListItem Text="Standard Report" Value="SR"></asp:ListItem>
        <asp:ListItem Text="Enterprise Report" Value="ER" disabled="disabled"></asp:ListItem>
    </asp:DropDownList>
 

4voto

Phaedrus Points 6450

Vous pouvez utiliser un validateur de champ obligatoire et définir la propriété de valeur initiale sur la valeur de l'élément dans la liste déroulante que vous ne souhaitez pas sélectionner.

 <asp:RequiredFieldValidator ID="RequiredFieldValidator" runat="server"
                        ErrorMessage="" ControlToValidate="DropDown" InitialValue="Unselectable Item"></asp:RequiredFieldValidator>
 

1voto

Samy Alihamad Points 37

J'ai eu ce même problème et j'ai essayé d'utiliser la première réponse publiée, mais cela n'a pas fonctionné pour moi. J'ai ensuite changé le premier message en:

 foreach ( ListItem item in dropdownlist.Items )
{
  if ( [item should be disabled contdition] )
  {
     item.Enabled = false;
  }
}
 

et cela a fonctionné pour moi.

0voto

Mayo Points 5532

Vous pouvez effectuer cette opération côté client avec un gestionnaire qui est déclenché lorsqu'un élément est sélectionné. Désélectionnez ensuite l'élément et / ou affichez un message d'erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X