2009-09-04 4 views
31

Ich habe eine Dropdown-Liste, die mehrere Optionen zum Erstellen von Berichten hat. Basierend auf der Art des Kontos hat der Benutzer bestimmte Optionen, die sichtbar, aber nicht auswählbar sein sollten (als Anreiz für sie, ein Upgrade durchzuführen).machen Drop-Down-Listenelement nicht auswählbar

Ich fragte mich, ob jemand einen Weg wusste, dies zu erreichen.

Die Berechtigungen sind bereits vorhanden Ich brauche nur Hilfe bei der Auswahl bestimmter Elemente nicht auswählbar.

jede Hilfe würde sehr geschätzt werden.

shawn

Antwort

53

Sind Sie nicht sicher, ob Sie noch eine Antwort dafür suchen?

Mark Redman's answer ist großartig, wenn Sie die Auswahlliste in der Aspx-Seite definieren können, aber wenn Sie dynamisch die Dropdownliste dynamisch binden, können Sie nicht. Diese

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

rendert Ihre deaktivierten Elemente grau dargestellt (in neueren Versionen von IE funktioniert nicht sicher, auf volle Browser-Unterstützung aber)

Ich hatte Erfolg die folgende Verwendung des Ergebnisses sind Sie nach zu erreichen.

+0

Ich füge Ihren vorgeschlagenen Code im 'Page_Load'-Event hinzu, aber' ListItem'-Element (Select), das ich deaktiviert haben möchte, ist immer noch nicht ausgegraut. Irgendeine Idee warum? –

+0

Deaktiviert das Element? Wenn dies der Fall ist, könnten auch Stile angepasst werden? –

+2

Sie müssen den Code im Databinding-Ereignishandler für das Dropdownlistensteuerelement hinzufügen. –

2

Sie können ein Pflichtfeld Validator verwenden und die Anfangswert-Eigenschaft auf den Wert des Elements in der Dropdown-Liste setzen Sie nicht wählbar wollen.

0

Sie können diese Clientseite mit einem Handler ausführen, der ausgelöst wird, wenn ein Element ausgewählt wird. Deaktivieren Sie dann den Eintrag und/oder zeigen Sie eine Fehlermeldung an.

16

Sie können ein <option> Tag in einer HTML deaktivieren <select>

See: http://www.htmlref.com/reference/appa/tag_option.htm

in 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> 
+0

Wie es in ASP.NET zu tun ? –

+0

Ich musste dafür keinen Code schreiben !! :-) –

-3

Versuchen Sie, diese

myDropDownList.Items.FindByValue("ReportValue").Enabled = false; 

Dies wird das Deaktivieren Element von der Liste im Grunde nicht zeigt es in der Liste an.

"ReportValue" = Der Wert des Elements, das deaktiviert werden soll.

+1

Er möchte, dass die deaktivierten Elemente nur nicht auswählbar sind, also nicht sicher, ob das funktioniert. –

3

Ich hatte das gleiche Problem und versuchte, die erste Antwort geschrieben, aber es hat nicht funktioniert für mich. Ich änderte dann den ersten Beitrag zu:

und es funktionierte für mich.

+5

Dieser Ansatz entfernt das Element aus der Liste und deaktiviert es nicht. Es beantwortet also nicht die erste Frage in diesem Post. –

-1

Wenn dies HTML-Steuerelement ist, dann ist es sehr einfach, es UNselecteable zu machen. Verwenden Sie einfach das "optgroup" HTML-Element. z.B.

<select> 
<optgroup label="Hardware"></optgroup> 
<option id="1">mouse</option> 
<option id="2">keyboard</option> 
<option id="3">monitor</option> 
<optgroup label="Software"></optgroup> 
<option id="Option1">windows XP</option> 
<option id="Option2">MS Office</option> 
<option id="Option3">VStudio</option> 
</select> 

(HINWEIS: Dies funktioniert in beiden IE/firefox)

Dank Sushil Jinder

+3

Dies ist nicht, was 'optgroup' ist. – You

1

Sie könnten versuchen, diese

myDropDownList.Items.FindByValue("ReportValue").Attributes.Add("disabled", "disabled"); 
Verwandte Themen