webgrouplist.cs

来自「该项目中对 SQLHelper 类进行了简单封装」· CS 代码 · 共 161 行

CS
161
字号
/* 
 * WebGroupList.cs @Microsoft Visual Studio 2008 <.NET Framework 3.5>
 * AfritXia
 * 2006-11-12
 * 
 * Copyright(c) http://www.AfritXia.NET/
 * 
 */

using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;

using NET.AfritXia.Components.Web.GroupList;

namespace NET.AfritXia.Components.Web
{
	/// <summary>
	/// 分组列表控件
	/// </summary>
	[ParseChildren(false),
		ToolboxData("<{0}:WebGroupList runat=server></{0}:WebGroupList>"),
		ControlBuilderAttribute(typeof(WebGroupListControlBuilder))]
	public class WebGroupList : WebControl, INamingContainer
	{
		// 脚本 ID
		private const string SCRIPT_ID = "{Q2GWA8WO__WebGroupList_javascript}";
		// 脚本
		private const string SCRIPT = "<script type='text/javascript' src='{0}'></script>";

		// 组打开状态下的图片 URL
		private string m_groupOpenedImgSrc = null;
		// 组关闭状态下的图片 URL
		private string m_groupClosedImgSrc = null;
		// 项目标签集合
		private List<ItemTag> m_items = new List<ItemTag>();

		#region 类 WebGroupList 构造器
		/// <summary>
		/// 类 WebGroupList 默认构造器
		/// </summary>
		public WebGroupList()
		{
		}
		#endregion

		/// <summary>
		/// 设置或获取组打开状态下的图片 URL
		/// </summary>
		public string GroupOpenedImgSrc
		{
			set
			{
				this.m_groupOpenedImgSrc = value;
			}

			get
			{
				return this.m_groupOpenedImgSrc;
			}
		}

		/// <summary>
		/// 设置或获取组关闭状态下的图片 URL
		/// </summary>
		public string GroupClosedImgSrc
		{
			set
			{
				this.m_groupClosedImgSrc = value;
			}

			get
			{
				return this.m_groupClosedImgSrc;
			}
		}

		/// <summary>
		/// 获取项目标签集合
		/// </summary>
		public List<ItemTag> Items
		{
			get
			{
				return this.m_items;
			}
		}

		/// <summary>
		/// 添加子控件到该控件中
		/// </summary>
		/// <param name="obj"></param>
		protected override void AddParsedSubObject(object obj)
		{
			if (!(obj is GroupTag) && !(obj is ItemTag))
				return;

			if (obj is GroupTag)
			{
				GroupTag groupTag = (GroupTag)obj;

				// 设置组打开状态下的图片 URL
				if (groupTag.OpenedStateImgSrc == null)
					groupTag.OpenedStateImgSrc = this.GroupOpenedImgSrc;

				// 设置组关闭状态下的图片 URL
				if (groupTag.ClosedStateImgSrc == null)
					groupTag.ClosedStateImgSrc = this.GroupClosedImgSrc;
			}

			// 将标记加入集合
			this.Items.Add((ItemTag)obj);

			// 将标记加入到控件集合
			base.AddParsedSubObject(obj);
		}

		/// <summary>
		/// 在绘制控件之前,为控件注册客户端脚本
		/// </summary>
		/// <param name="e"></param>
		protected override void OnPreRender(EventArgs e)
		{
			base.OnPreRender(e);

			if (!this.Page.ClientScript.IsClientScriptBlockRegistered(SCRIPT_ID))
			{
				// 为控件注册客户端脚本
				this.Page.ClientScript.RegisterClientScriptBlock(typeof(void), SCRIPT_ID,
					String.Format(SCRIPT, ResourceGetter.GetResourcesURL("WebGroupListJS")));
			}
		}

		/// <summary>
		/// 绘制分组列表控件
		/// </summary>
		/// <param name="writer"></param>
		protected override void Render(HtmlTextWriter writer)
		{
			writer.WriteLine("<table width='{0}' cellpadding='2' cellspacing='0'>", this.Width);

			foreach (Control c in this.Controls)
			{
				writer.WriteLine("<tr>");
				writer.WriteLine("<td>");

				c.RenderControl(writer);

				writer.WriteLine("</td>");
				writer.WriteLine("</tr>");
			}

			writer.WriteLine("</table>");

			// 绘制客户端脚本
			ClientRunTimeRender.Render(writer, this);
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?