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();

}

}

}