Click here to Skip to main content
15,886,519 members
Articles / Web Development / CSS
Article

ListItem Control Background Formatting for DropDownList

Rate me:
Please Sign up or sign in to vote.
2.00/5 (5 votes)
24 Feb 2006CPOL1 min read 57K   24   8
An article on a workaround for setting the background color of an ASP.NET DropDownList.

Introduction

If you have found this article then it means that you could not get the background style of a ListItem control to work properly with such web controls as a DropDownList. Yes, it's supposed to work because the ListItem control does contain an Attribute collection, but for some reason, none of the styles nor the supplied attributes will work. Well, a more tedious solution can be found here: List Control Items and Attributes by Scott Mitchell.

My solution, however, works just as well with one (known) flaw. The AutoPostBack property can not be used. I'm sure there are some JavaScript capabilities that can be implemented to duplicate this feature, so we won't consider it a major issue. At this point, you are probably wondering why the AutoPostBack property will be unavailable. Well my question to you is, "Why are you trying to use a DropDownList if its ListItem attributes don't work?".

If the handling of attributes for a DropDownList's ListItems are an obvious bug, then how about the ListItems for a System.Web.UI.HtmlControls.HtmlSelect control? I'm sure you know of all the ways to bind data with ASP.NET controls, so I'm positive that you'll use the simplicities of this example in more advanced ways.

ASPX

HTML
<form id="Form1" method="post" runat="server">
  <select name="ddlTest" id="ddlTest" runat="server" style="width:125px">
  </select>
</form>

Code Behind

VB
Protected WithEvents ddlTest As System.Web.UI.HtmlControls.HtmlSelect

Private Sub Page_Load(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles MyBase.Load
    If Not Me.IsPostBack Then
        Dim l As ListItem

        l = New ListItem("Lions", "1")
        l.Attributes.Add("style", "background: yellow;")
        ddlTest.Items.Add(l)

        l = New ListItem("Tigers", "2")
        l.Attributes.Add("style", "background: orange;")
        ddlTest.Items.Add(l)

        l = New ListItem("Bears", "3")
        l.Attributes.Add("style", "background: brown;")
        ddlTest.Items.Add(l)

        l = New ListItem("Oh My!", "4")
        l.Attributes.Add("style", "background: red; color: white;")
        ddlTest.Items.Add(l)
    End If
End Sub

That's It

There's always a solution, even if it is just a quick fix.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) CDC
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 1 Pin
Almia mohamed25-Nov-13 2:32
Almia mohamed25-Nov-13 2:32 
GeneralThinking outside the box.. Pin
Adam Joyce16-Sep-09 12:53
Adam Joyce16-Sep-09 12:53 
GeneralRe: Thinking outside the box.. Pin
Roy Oliver28-Sep-09 15:00
Roy Oliver28-Sep-09 15:00 
GeneralThank you! / C# Pin
michaelgcooper5-May-09 17:08
michaelgcooper5-May-09 17:08 
GeneralRe: Thank you! / C# Pin
Roy Oliver7-May-09 14:24
Roy Oliver7-May-09 14:24 
GeneralIt doesn't work if Autopost back is true Pin
sumitranjansumit27-Aug-07 5:50
sumitranjansumit27-Aug-07 5:50 
Questionwhy not work? Pin
wuxsh16-May-06 0:07
wuxsh16-May-06 0:07 
AnswerRe: why not work? Pin
Roy Oliver17-May-06 14:08
Roy Oliver17-May-06 14:08 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.