listbox item font

Discussion in 'ASP .Net' started by =?Utf-8?B?bWtpZ2Vy?=, Jul 18, 2005.

  1. 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
    =?Utf-8?B?bWtpZ2Vy?=, Jul 18, 2005
    #1
    1. Advertising

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

    Jason Lind

    "mkiger" wrote:

    > 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
    =?Utf-8?B?SmFzb24gTCBMaW5k?=, Jul 18, 2005
    #2
    1. Advertising

  3. 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();
    }
    }
    }


    --
    C# Dev


    "Jason L Lind" wrote:

    > I do not believe that is possible in HTML. You might want to look into using
    > an ASP.NET DataList.
    >
    > Jason Lind
    >
    > "mkiger" wrote:
    >
    > > 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
    =?Utf-8?B?SmFjZWsgU3Rhd2lja2k=?=, Jul 18, 2005
    #3
  4. =?Utf-8?B?bWtpZ2Vy?=

    russ Guest

    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];
    }
    }
    }
    }
    russ, Jul 19, 2005
    #4
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Karl Hungus

    Font class, external font files question

    Karl Hungus, Feb 4, 2004, in forum: ASP .Net
    Replies:
    1
    Views:
    527
    Karl Hungus
    Feb 4, 2004
  2. Simon Prince
    Replies:
    2
    Views:
    3,328
    =?Utf-8?B?TWljaGFlbCBUYXlsb3I=?=
    Oct 19, 2004
  3. =?Utf-8?B?Tmlja3k=?=
    Replies:
    2
    Views:
    710
    Matt Berther
    Feb 20, 2005
  4. Michael Glavitsch
    Replies:
    1
    Views:
    763
    Roedy Green
    Jul 15, 2003
  5. mttc
    Replies:
    2
    Views:
    2,393
    Roedy Green
    Jul 3, 2009
Loading...

Share This Page