optgroup in dropdownlist !!

Last post 07-04-2009 8:36 AM by Ram Reddy Mekha. 2 replies.

Sort Posts:

  • optgroup in dropdownlist !!

    07-04-2009, 7:22 AM
    • Participant
      1,421 point Participant
    • pamyral_279
    • Member since 03-06-2005, 9:05 PM
    • Posts 390

    Hi all,

    I need to add : <optgroup label ... in dropdownlist in code behind !

    I don't find this property in dropdownlist!
    How can i do ?
    Thank you very much.

  • Re: optgroup in dropdownlist !!

    07-04-2009, 8:31 AM
    Answer

    You can write your own Render method, or shortcut using something someone else has already created: http://www.codeplex.com/SharpPieces/


    Regards Mike
    [MVP - ASP/ASP.NET]
    My site
    What ASP.NET can and can't do
  • Re: optgroup in dropdownlist !!

    07-04-2009, 8:36 AM
    Answer

    Direct property will not be there instead we need to do like this...

    <asp:DropDownList ID="ddlItems" runat="server">
        </asp:DropDownList>

    Imports System
    Imports System.Collections
    Imports System.Collections.Generic
    Imports System.Configuration
    Imports System.Data
    Imports System.Linq
    Imports System.Web
    Imports System.Web.Security
    Imports System.Web.UI
    Imports System.Web.UI.HtmlControls
    Imports System.Web.UI.WebControls
    Imports System.Web.UI.WebControls.WebParts
    Imports System.Xml.Linq
    Imports System.Text
    Imports System.IO
    Imports System.Runtime.Serialization.Json
    Imports System.Web.Script.Serialization
    Public Partial Class Upload
        Inherits System.Web.UI.Page
        Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim item1 As New ListItem("Camel", "1")
            item1.Attributes("OptionGroup") = "Mammals"
           
            Dim item2 As New ListItem("Lion", "2")
            item2.Attributes("OptionGroup") = "Mammals"
           
            Dim item3 As New ListItem("Whale", "3")
            item3.Attributes("OptionGroup") = "Mammals"
           
            Dim item4 As New ListItem("Walrus", "4")
            item4.Attributes("OptionGroup") = "Mammals"
           
            Dim item5 As New ListItem("Velociraptor", "5")
            item5.Attributes("OptionGroup") = "Dinosaurs"
           
            Dim item6 As New ListItem("Allosaurus", "6")
            item6.Attributes("OptionGroup") = "Dinosaurs"
           
            Dim item7 As New ListItem("Triceratops", "7")
            item7.Attributes("OptionGroup") = "Dinosaurs"
           
            Dim item8 As New ListItem("Stegosaurus", "8")
            item8.Attributes("OptionGroup") = "Dinosaurs"
           
            Dim item9 As New ListItem("Tyrannosaurus", "9")
            item9.Attributes("OptionGroup") = "Dinosaurs"
           
            ddlItems.Items.Add(item1)
            ddlItems.Items.Add(item2)
            ddlItems.Items.Add(item3)
            ddlItems.Items.Add(item4)
            ddlItems.Items.Add(item5)
            ddlItems.Items.Add(item6)
            ddlItems.Items.Add(item7)
            ddlItems.Items.Add(item8)
            ddlItems.Items.Add(item9)
        End Sub
       
    End Class
    Public Class
    DropDownListAdapter
        Inherits System.Web.UI.WebControls.Adapters.WebControlAdapter
        Protected Overloads Overrides Sub RenderContents(ByVal writer As HtmlTextWriter)
            Dim list As DropDownList = TryCast(Me.Control, DropDownList)
           
            Dim currentOptionGroup As String
            Dim
    renderedOptionGroups As New List(Of String)()
           
            For Each item As ListItem In list.Items
                If item.Attributes("OptionGroup") Is Nothing Then
                    RenderListItem(item, writer)
                Else
                    currentOptionGroup = item.Attributes("OptionGroup")
                   
                    If renderedOptionGroups.Contains(currentOptionGroup) Then
                        RenderListItem(item, writer)
                    Else
                        If
    renderedOptionGroups.Count &gt; 0 Then
                            RenderOptionGroupEndTag(writer)
                        End If
                       
                        RenderOptionGroupBeginTag(currentOptionGroup, writer)
                        renderedOptionGroups.Add(currentOptionGroup)
                       
                        RenderListItem(item, writer)
                    End If
                End If
            Next
           
            If
    renderedOptionGroups.Count > 0 Then
                RenderOptionGroupEndTag(writer)
            End If
        End Sub
       
        Private Sub
    RenderOptionGroupBeginTag(ByVal name As String, ByVal writer As HtmlTextWriter)
            writer.WriteBeginTag("optgroup")
            writer.WriteAttribute("label", name)
            writer.Write(HtmlTextWriter.TagRightChar)
            writer.WriteLine()
        End Sub
       
        Private Sub
    RenderOptionGroupEndTag(ByVal writer As HtmlTextWriter)
            writer.WriteEndTag("optgroup")
            writer.WriteLine()
        End Sub
       
        Private Sub
    RenderListItem(ByVal item As ListItem, ByVal writer As HtmlTextWriter)
            writer.WriteBeginTag("option")
            writer.WriteAttribute("value", item.Value, True)
           
            If item.Selected Then
                writer.WriteAttribute("selected", "selected", False)
            End If
           
            For Each
    key As String In item.Attributes.Keys
                writer.WriteAttribute(key, item.Attributes(key))
            Next
           
            writer.Write(HtmlTextWriter.TagRightChar)
            HttpUtility.HtmlEncode(item.Text, writer)
            writer.WriteEndTag("option")
            writer.WriteLine()
        End Sub
    End Class

    Have a look at these too.

    http://weblogs.asp.net/jeff/archive/2006/12/27/dropdownlist-with-optgroup.aspx

    http://www.codeproject.com/KB/custom-controls/DropDownListOptionGroup.aspx 

    Regards,
    Ram Reddy Mekha, +91-994-840-4315
    http://abhiramreddymekha.blogspot.com

    Please Mark as Answer if the post helps you.
Page 1 of 1 (3 items)