您的位置:首页 > 技术开发 > 正文

扩展DropDownList控件和ListBox控件 - 支持分组功能(optgroup标签)

作者:ITPUB论坛  2008-05-14
内容导航:
文本Tag: 微软 sql
  Property.cs
using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using System.Web.UI; namespace YYControls { /**//// <summary> /// SmartDropDownList类的属性部分 /// </summary> public partial class SmartDropDownList { /**//// <summary> /// 用于添加SmartDropDownList的分组项的ListItem的Value值 /// </summary> [ Browsable(true), Description("用于添加DropDownList的分组项的ListItem的Value值"), Category("扩展") ] public virtual string OptionGroupValue { get { string s = (string)ViewState["OptionGroupValue"]; return (s == null) ? "optgroup" : s; } set { ViewState["OptionGroupValue"] = value; } } } }
  OptionGroup.cs
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Web.UI.WebControls; using System.Web.UI; using System.Web; namespace YYControls { /**//// <summary> /// SmartDropDownList类的属性部分 /// </summary> public partial class SmartDropDownList { /**//// <summary> /// 呈现Option或OptionGroup /// </summary> /// <param name="writer">writer</param> private void OptionGroupRenderContents(HtmlTextWriter writer) { // 是否需要呈现OptionGroup的EndTag bool writerEndTag = false; foreach (ListItem li in this.Items) { // 如果没有optgroup属性则呈现Option if (li.Value != this.OptionGroupValue) { // 呈现Option RenderListItem(li, writer); } // 如果有optgroup属性则呈现OptionGroup else { if (writerEndTag) // 呈现OptionGroup的EndTag OptionGroupEndTag(writer); else writerEndTag = true; // 呈现OptionGroup的BeginTag OptionGroupBeginTag(li, writer); } } if (writerEndTag) // 呈现OptionGroup的EndTag OptionGroupEndTag(writer); } /**//// <summary> /// 呈现OptionGroup的BeginTag /// </summary> /// <param name="li">OptionGroup数据项</param> /// <param name="writer">writer</param> private void OptionGroupBeginTag(ListItem li, HtmlTextWriter writer) { writer.WriteBeginTag("optgroup"); // 写入OptionGroup的label writer.WriteAttribute("label", li.Text); foreach (string key in li.Attributes.Keys) { // 写入OptionGroup的其它属性 writer.WriteAttribute(key, li.Attributes[key]); } writer.Write(HtmlTextWriter.TagRightChar); writer.WriteLine(); } /**//// <summary> /// 呈现OptionGroup的EndTag /// </summary> /// <param name="writer">writer</param> private void OptionGroupEndTag(HtmlTextWriter writer) { writer.WriteEndTag("optgroup"); writer.WriteLine(); } /**//// <summary> /// 呈现Option /// </summary> /// <param name="li">Option数据项</param> /// <param name="writer">writer</param> private void RenderListItem(ListItem li, HtmlTextWriter writer) { writer.WriteBeginTag("option"); // 写入Option的Value writer.WriteAttribute("value", li.Value, true); if (li.Selected) { // 如果该Option被选中则写入selected writer.WriteAttribute("selected", "selected", false); } foreach (string key in li.Attributes.Keys) { // 写入Option的其它属性 writer.WriteAttribute(key, li.Attributes[key]); } writer.Write(HtmlTextWriter.TagRightChar); // 写入Option的Text HttpUtility.HtmlEncode(li.Text, writer); writer.WriteEndTag("option"); writer.WriteLine(); } } }
相关关键词 .NET server sql 微软
1
【内容导航】
第1页: 概述
©版权所有。未经许可,不得转载。
[责任编辑:nancy]