Viewing source for recipe0305cs.cs

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Collections;
using System.Text;

namespace AspNetCookbook
{
	[DefaultProperty("DataSource"),
	ToolboxData("<{0}:CustomBulletedList runat=\"server\"></{0}:CustomBulletedList>")]
	public class CustomBulletedList : System.Web.UI.WebControls.WebControl
	{
		#region Private variables

		private StringBuilder	_html			= new StringBuilder();
		private IEnumerable		_dataSource;

		#endregion
	
		#region Properties

		[Bindable(true),
		Category("Data"),
		DefaultValue(null),
		Description("The data source used to build up the bulleted list."),
		DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
		public IEnumerable DataSource
		{
			get
			{
				return _dataSource;
			}
			set
			{
				_dataSource = value;
			}
		}

		#endregion

		#region Methods

		private void CreateBulletedList()
		{
			IEnumerable dataSource = null;

			try
			{
				dataSource = this._dataSource;
			}
			catch
			{
				dataSource = null;
			}

			if (dataSource != null)
			{
				_html.Append("<ul>");
				foreach (object dataObject in dataSource)
				{
					_html.Append("<li>");
					_html.Append(dataObject.ToString());
					_html.Append("</li>");
				}
				_html.Append("</ul>");
			}
		}

		public override void DataBind()
		{
			base.OnDataBinding(EventArgs.Empty);

			CreateBulletedList();
		}

		protected override void Render(HtmlTextWriter output)
		{
			output.Write(_html);
		}

		#endregion
	}
}