![]() |
|
|
|
#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?= |
|
|
|
|
#2 |
|
Posts: n/a
|
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 |
|
|
|
#3 |
|
Posts: n/a
|
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 |
|
|
|
#4 |
|
Posts: n/a
|
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]; } } } } |
|