web-dev-qa-db-fra.com

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.

31
ErnieStings

Vous ne savez pas si vous cherchez toujours une réponse à cela?

réponse de Mark Redman est parfait si vous pouvez définir la liste de sélection dans la page aspx, mais si vous liez la liste déroulante dynamiquement, vous ne pouvez évidemment pas.

J'ai réussi à utiliser les éléments suivants pour obtenir le résultat que vous recherchez (je ne sais pas sur la prise en charge complète du navigateur, mais fonctionne dans les versions plus récentes d'IE)

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

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

57
Adam Fox

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

Voir: http://www.htmlref.com/reference/appa/tag_option.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>
16
Mark Redman

Tu pourrais essayer ça

myDropDownList.Items.FindByValue("ReportValue").Attributes.Add("disabled", "disabled");
2
Victor Caldas

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>
2
Phaedrus

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.

1
Samy Alihamad

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.

0
Mayo