.NET列表框中的Optgroup

时间:2010-11-22 05:51:42

标签: asp.net

我需要在列表框中对项目进行分组,类似于html SELECT中的OPTGROUP。

非常感谢任何建议。

4 个答案:

答案 0 :(得分: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 :(得分: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] + "'/>");
}

答案 2 :(得分:0)

您可以添加一个项目并禁用,更改颜色,最终效果是相同的,即

  

itemVersion.Attributes.Add(&#34;禁用&#34;,&#34; true&#34;)   itemVersion.Attributes.Add(&#34; style&#34;,&#34; color:#CCCCCC&#34;)   ddlAspectoOrigen.Items.Add(itemVersion)

答案 3 :(得分:0)

您可以使用HTML SELECT control并从代码隐藏中访问列表框中的所有属性。您只需添加标签runat="server"