2010-11-22 31 views
2

我需要將類似於HTML SELECT中的OPTGROUP的列表框中的項目分組。.NET中的Optgroup列表框

任何建議,非常感謝。

+0

[Dropdownlist control with asp.net(webforms)with ?]可能的重複?](http://stackoverflow.com/questions/130020/dropdownlist-control-with-optgroups-for-asp-net-webforms) – 2010-11-22 06:03:32

回答

3

重構Sandeep的答案:

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

注意這行應該包含'$(select).find()',以便不將所有選擇的選項分組到一個:'$(select).find(「option [optGroup ='」+ optGroups [i] +「']」)。wrapAll(「」);' – 2013-02-23 01:36:18

+0

是否有排序放置的optGroups,我試過jQuery排序,但它不起作用。 – 2013-09-11 10:01:08

2

我通過給選項添加一個屬性來完成此要求,並且屬性值將是我希望擁有的Optgroup名稱。而在客戶端我用這個代碼來渲染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

您可以添加一個項目,禁用,改變顏色,最終的效應是相同的,即

itemVersion.Attributes.Add(「禁用」,「真」) itemVersion.Attributes.Add( 「風格」,「顏色:#CCCCCC」) ddlAspectoOrigen.Items.Add(itemVersion)

0

您可以使用HTML SELECT control和像一個列表框代碼隱藏訪問的這一切特性。您只需添加標籤runat="server"

+0

雖然這可能會回答這個問題,但[這將是更可取的](http://meta.stackoverflow.com/q/8259)在此包含更多答案的基本部分,並提供供參考的鏈接。 – 2015-06-11 02:47:59