2010-11-22 5 views
2

Ich habe Elemente in der Listbox ähnlich der OPTGROUP in einem HTML-SELECT gruppieren müssen.OptGroup in .NET-Listbox

Alle Vorschläge werden sehr geschätzt.

+0

mögliches Duplikat von [Dropdown-Steuerelement mit s für asp.net (webforms)?] (Http://stackoverflow.com/questions/130020/dropdownlist-control-with-optgroups-for-asp-net-webforms) –

Antwort

3

Überarbeitete Sandeep Antwort:

http://jsfiddle.net/kgBr9/

HTML

<select id="mySelect"> 
    <option optGroup='a'>1</option> 
    <option optGroup='a'>1</option> 
    <option optGroup='a'>1</option> 
    <option optGroup='b'>2</option> 
    <option optGroup='b'>2</option> 
</select> 

JQuery

function SetupOptGroups(select) { 
    var optGroups=new Array();  
    var i = 0; 

    $(select).find("[optGroup]").each(function(index, domEle) { 
     var optGroup = $(this).attr("optGroup"); 
     if ($.inArray(optGroup, optGroups)==-1) optGroups[i++] = optGroup; 
    }); 

    for(i=0; i < optGroups.length; i++){ 
     $("option[optGroup='"+optGroups[i]+"']").wrapAll("<optgroup label='"+optGroups[i]+"'>"); 
    } 
} 
+1

Beachten Sie, dass diese Zeile das '$ (select) .find()' enthalten sollte, um nicht ALLE ausgewählten Optionen in einem zu gruppieren: '$ (select) .find (" option [optGroup = '"+ optGroups [i] + "']"). wrapAll (""); ' –

+0

Gibt es trotzdem eine Möglichkeit, die platzierten optGroups zu sortieren, habe ich versucht jQuery zu sortieren, aber es funktioniert nicht. –

2

Ich habe diese Anforderung erfüllt, indem ich den Optionen ein Attribut hinzugefügt habe, und der Attributwert ist der Name der Optgruppe, den ich haben möchte. Und in der Client-Seite verwendet i diesen Code Drop-Down zu machen mit optgroups var optGroup = "";

var i = 0; 
$(this).find("option").each(function() { 
    if (optGroup !== "") 
     optGroup += "," + $(this).attr("OptGroup"); 
    else 
     optGroup = $(this).attr("OptGroup"); 
}); 
var optGroups = $.unique(optGroup.split(",")); 
for (var optGroupEle in optGroups) { 
    if ($("optgroup[label='" + optGroups[optGroupEle] + "']").html() == null) 
     $("option[OptGroup='" + optGroups[optGroupEle] + "']").wrapAll("<optgroup label='" + optGroups[optGroupEle] + "'/>"); 
} 
0

Sie können ein Element und deaktivieren, ändern Sie die Farbe, die endgültige EFFEKT gleich ist, dh

itemVersion.Attributes.Add ("disabled", "true") itemVersion.Attributes.Add hinzufügen ("Stil", "color: #CCCCCC") ddlAspectoOrigen.Items.Add (itemVersion)

0

können Sie die HTML SELECT control verwenden und Zugriff auf alle Objekte dieses von der Code-Behind wie ein listbox. Sie müssen nur das Label runat="server" hinzufügen.

+0

Während dies die Frage beantworten könnte, [wäre es vorzuziehen] (http://meta.stackoverflow.com/q/8259), mehr der wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. –

Verwandte Themen