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 > 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.comPlease Mark as Answer if the post helps you.