listbox item font

G

Guest

Hey Guys.
I'm making an asp.net app and I have a question regarding listboxes. I
have a list box and I would like some of the items to be bold based on
certian criteria. Is this possible?
matt
 
G

Guest

I do not believe that is possible in HTML. You might want to look into using
an ASP.NET DataList.

Jason Lind
 
G

Guest

No way! Standard ListBox is really "simple". Try something like this:

/// <summary>
/// ListBoxWithColor
///
/// Simple control that renders the color attribute of each ListBox option.
///
/// Usage:
/// ListBoxWithColor1.Items.Clear();
/// ListBoxWithColor1.Items.Add(new ListItem("Hubba","0"));
/// ListBoxWithColor1.Items[0].Attributes["style"] =
"background-color:red";
///
/// ListBoxWithColor1.Items.Add(new ListItem("Hubba1","1"));
/// ListBoxWithColor1.Items[1].Attributes["style"] =
"background-color:white";
///
/// ListBoxWithColor1.Items[1].Selected = true;
///
/// Test with:
/// M$ Internet Explorer 6.
///
/// </summary>
[ToolboxData("<{0}:ListBoxWithColor runat=server></{0}:ListBoxWithColor>")]
public class ListBoxWithColor : System.Web.UI.WebControls.ListBox
{
public ListBoxWithColor()
{
// constructor
}
/// <summary>
/// Override to save color attrib to viewstate
/// </summary>
protected override object SaveViewState()
{
// creat object array for Item count + 1
object[] allStates = new object[this.Items.Count + 1];

// the +1 is to hold the base info like dis
object baseState = base.SaveViewState();
allStates[0] = baseState;

Int32 i = 1;
// now loop thru and save each Style attrib for the List
foreach(ListItem li in this.Items)
{
allStates[i++] = li.Attributes["style"].ToString();
}
return allStates;
}
/// <summary>
/// Override to restore color attrib
/// </summary>
protected override void LoadViewState(object savedState)
{
if (savedState != null)
{
object[] myState = (object[])savedState;

// restore base first
if (myState[0] != null)
base.LoadViewState(myState[0]);

Int32 i = 1;
foreach(ListItem li in this.Items)
{
// loop thru and restore each style attrib
li.Attributes["style"] = (string)myState[i++];
}
}
}
/// <summary>
/// Override to render contents of ListBox
/// </summary>
protected override void RenderContents(HtmlTextWriter writer)
{
foreach(ListItem li in this.Items)
{
writer.WriteBeginTag("option");

if(li.Selected)
writer.WriteAttribute("selected","selected",false);

if(li.Attributes.Count > 0)
li.Attributes.Render(writer);

writer.WriteAttribute("value",li.Value.ToString());
writer.Write(HtmlTextWriter.TagRightChar);
writer.Write(li.Text);

writer.WriteEndTag("option");
writer.WriteLine();
}
}
}
 
R

russ

works great. (nearly) exactly what I wanted... :)

changed the save/load viewstate to deal with all the attributes not
just style.

protected override object SaveViewState()
{
// creat object array for Item count + 1
object[] allStates = new object[this.Items.Count + 1];

// the +1 is to hold the base info like dis
object baseState = base.SaveViewState();
allStates[0] = baseState;

Int32 i = 1;
// now loop thru and save each Style attrib for the List
foreach(ListItem li in this.Items)
{
Int32 j = 0;
string[][] attributes = new string[li.Attributes.Count][];
foreach (string attribute in li.Attributes.Keys)
{
attributes[j++] = new string[] {attribute,
li.Attributes[attribute]};
}
allStates[i++] = attributes;
}
return allStates;
}

protected override void LoadViewState(object savedState)
{
if (savedState != null)
{
object[] myState = (object[])savedState;

// restore base first
if (myState[0] != null)
base.LoadViewState(myState[0]);

Int32 i = 1;
foreach(ListItem li in this.Items)
{
// loop thru and restore each style attrib
//li.Attributes["style"] =
foreach (string[] attribute in (string[][])myState[i++])
{
li.Attributes[attribute[0]] = attribute[1];
}
}
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top