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

}

}

}