⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eformcontrols.cs

📁 医疗决策支持系统
💻 CS
📖 第 1 页 / 共 3 页
字号:
using System;
using System.Collections;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Caisis.UI.Core.Classes.CustomControls
{
	#region interfaces
	public interface IEformInputField : ICaisisInputControl
	{
		string RecordId
		{
			get;
			set;
		}

		string ParentRecordId
		{
			get;
			set;
		}
	}
	#endregion

	#region static utilities
	internal class _EnableHidden
	{
		internal static string GetAttributeString(WebControl wc, string hiddenList, string jsFunction, string prependJsParams)
		{
			if (hiddenList != null)
			{
				ArrayList enable = new ArrayList();
				string[] hiddens = hiddenList.Split(new char[] {','});
				foreach (string h in hiddens)
				{
					Control c = wc.Parent.FindControl(h);
					if (c != null)
					{
						enable.Add(c.ClientID);
					}
				}

				if (prependJsParams == null)
				{
					prependJsParams = "";
				}

				// jsFunction + "(" + prependJsParams + "'" + String.Join(",", (string[]) enable.ToArray(typeof (string))) + "');"

				if (enable.Count > 0)
				{
					StringBuilder buffer = new StringBuilder(jsFunction);
					buffer.Append("(");
					buffer.Append(prependJsParams);
					buffer.Append("'");
					buffer.Append(String.Join(",", (string[]) enable.ToArray(typeof (string))));
					buffer.Append("');");
				
					return buffer.ToString();
				}			
			}
			
			return null;
		}

		internal static void AddEnableHiddenAttributes(WebControl wc, string hiddenList, string uiEventType, 
			string jsFunction, string prependJsParams)
		{
				/*
				ArrayList enable = new ArrayList();
				string[] hiddens = hiddenList.Split(new char[] {','});
				foreach (string h in hiddens)
				{
					Control c = wc.Parent.FindControl(h);
					if (c != null)
					{
						enable.Add(c.ClientID);
					}
				}

				if (prependJsParams == null)
				{
					prependJsParams = "";
				}
				*/

			string attString = _EnableHidden.GetAttributeString(wc, hiddenList, jsFunction, prependJsParams);

			if (attString != null)
			{
				wc.Attributes.Add(uiEventType, attString);
			}
		}

		internal static void AppendEnableHiddenAttributes(WebControl wc, string hiddenList, string uiEventType,
			string jsFunction, string prependJsParams)
		{
			string attString = _EnableHidden.GetAttributeString(wc, hiddenList, jsFunction, prependJsParams);

			if (attString != null)
			{
				if (wc.Attributes[uiEventType] == null)
				{
					wc.Attributes.Add(uiEventType, attString);
				}
				else
				{
					wc.Attributes[uiEventType] += " " + attString;
				}
			}
		}

		internal static void AddEnableHiddenOnClickAttributes(WebControl wc, string hiddenList)
		{
			_EnableHidden.AddEnableHiddenAttributes(wc, hiddenList, "onclick","enableHiddens", null);
		}

		internal static void AddEnableHiddenOnSelectAttributes(WebControl wc, string hiddenList)
		{
			_EnableHidden.AddEnableHiddenAttributes(wc, hiddenList, "onchange", "enableHiddens", null);
		}

		internal static void AddEnableHiddenOnBlurAttributes(WebControl wc, string hiddenList)
		{
			_EnableHidden.AddEnableHiddenAttributes(wc, hiddenList, "onblur", "enableHiddensOnBlur", "this.value,");
		}

		internal static void AddEnableHiddenOnChangeAttributes(WebControl wc, string hiddenList)
		{
			_EnableHidden.AddEnableHiddenAttributes(wc, hiddenList, "onchange", "enableHiddensOnBlur", "this.value,");
		}

		internal static void AppendEnableHiddenOnClickAttributes(WebControl wc, string hiddenList)
		{
			_EnableHidden.AppendEnableHiddenAttributes(wc, hiddenList, "onclick","enableHiddens", null);
		}

		internal static void AppendEnableHiddenOnSelectAttributes(WebControl wc, string hiddenList)
		{
			_EnableHidden.AppendEnableHiddenAttributes(wc, hiddenList, "onchange", "enableHiddens", null);
		}

		internal static void AppendEnableHiddenOnBlurAttributes(WebControl wc, string hiddenList)
		{
			_EnableHidden.AppendEnableHiddenAttributes(wc, hiddenList, "onblur", "enableHiddensOnBlur", "this.value,");
		}

		internal static void AppendEnableHiddenOnChangeAttributes(WebControl wc, string hiddenList)
		{
			_EnableHidden.AppendEnableHiddenAttributes(wc, hiddenList, "onchange", "enableHiddensOnBlur", "this.value,");
		}
	}

	// usage: AddEnableHiddenAttributes a = new AddEnableHiddenAttributes(_EnableHidden._AddEnableHiddenAttributes);
	// usage: a(this, this.enableHiddenOnUIEvent);

	// but why do things this way (as opposed to just calling the static method above), since we don't need to inject
	// anonymous code? answer: no good reason, we should just call the static method
	#endregion

	#region widgets
	[DefaultProperty("Text"), ToolboxData("<{0}:EformDeleteIcon runat=server></{0}:EformDeleteIcon")]
	public class EformDeleteIcon : System.Web.UI.HtmlControls.HtmlImage
	{
		public EformDeleteIcon() : base() 
		{ 
			this.Src = "~/Images/EFormDeleteRow.gif";
			this.Height = 14;
			this.Width = 22;
			this.Attributes["onclick"] = "clearElementsInParentRow(this);";
		}
	}
	#endregion

	[DefaultProperty("Text"), ToolboxData("<{0}:EformTextBox runat=server></{0}:EformTextBox>")]
	public class EformTextBox : CaisisTextBox, IEformInputField
	{
		#region private instance members
		private string recordId;
		private string parentRecordId;
		#endregion

		#region IEformInputField Members

		public string RecordId
		{
			get { return recordId; }
			set { recordId = value; }
		}

		public string ParentRecordId
		{
			get { return parentRecordId; }
			set { parentRecordId = value; }
		}

		#endregion

		#region ICaisisInputControl Members

		
		public new string Table
		{
			get { return base.Table; }
			set { base.Table = value; }
		}

		public new string Field
		{
			get { return base.Field; }
			set { base.Field = value; }
		}
		
		public new string FieldLabel
		{
			get { return base.FieldLabel; }
			set { base.FieldLabel = value; }
		}
		
		public new bool Required
		{
			get { return base.Required; }
			set { base.Required = value; }
		}
		
		#endregion

		#region enable hidden stuff
		private string enableHiddenOnUIEvent;

		public string EnableHiddenOnUIEvent
		{
			get { return enableHiddenOnUIEvent; }
			set { enableHiddenOnUIEvent = value; }
		}
		#endregion

		#region allow adding functionality to the client-side onchange event
		private string appendToOnChange;

		public string AppendToOnChange
		{
			get { return appendToOnChange; }
			set { appendToOnChange = value; }
		}
		#endregion

		public EformTextBox() : base() { }

		protected override void OnPreRender(EventArgs e)
		{
			base.OnPreRender (e);
			// how do we handle the problem of blurring, null input, etc.?
			_EnableHidden.AppendEnableHiddenOnBlurAttributes(this, this.enableHiddenOnUIEvent);

			if (this.appendToOnChange != null && !"".Equals(this.appendToOnChange))
			{
				string oce = this.Attributes["onblur"];
				if (oce == null)
				{
					this.Attributes["onblur"] = this.appendToOnChange;
				}
				else
				{
					if (oce.Trim().EndsWith(";"))
					{
						this.Attributes["onblur"] = oce + " " + this.appendToOnChange;
					}
					else
					{
						this.Attributes["onblur"] = oce + "; " + this.appendToOnChange;
					}
				}
			}
		}
	}


	[DefaultProperty("Text"), ToolboxData("<{0}:EformTextArea runat=server></{0}:EformTextArea>")]
	public class EformTextArea : CaisisTextArea, IEformInputField
	{
		#region private instance members
		private string recordId;
		private string parentRecordId;
		#endregion

		#region IEformInputField Members

		public string RecordId
		{
			get { return recordId; }
			set { recordId = value; }
		}

		public string ParentRecordId
		{
			get { return parentRecordId; }
			set { parentRecordId = value; }
		}

		#endregion

		#region ICaisisInputControl Members

		public new string Table
		{
			get { return base.Table; }
			set { base.Table = value; }
		}

		public new string Field
		{
			get { return base.Field; }
			set { base.Field = value; }
		}
		
		public new string FieldLabel
		{
			get { return base.FieldLabel; }
			set { base.FieldLabel = value; }
		}
		
		public new bool Required
		{
			get { return base.Required; }
			set { base.Required = value; }
		}

		#endregion

		public EformTextArea() : base() { }
	}


	[DefaultProperty("Text"), ToolboxData("<{0}:EformComboBox runat=server></{0}:EformComboBox>")]
	public class EformComboBox : CaisisComboBox, IEformInputField
	{
		#region private instance members
		private string recordId;
		private string parentRecordId;
		#endregion

		#region IEformInputField Members

		public string RecordId
		{
			get { return recordId; }
			set { recordId = value; }
		}

		public string ParentRecordId
		{
			get { return parentRecordId; }
			set { parentRecordId = value; }
		}

		#endregion

		#region ICaisisInputControl Members

		public new string Table
		{
			get { return base.Table; }
			set { base.Table = value; }
		}

		public new string Field
		{
			get { return base.Field; }
			set { base.Field = value; }
		}
		
		public new string FieldLabel
		{
			get { return base.FieldLabel; }
			set { base.FieldLabel = value; }
		}
		
		public new bool Required
		{
			get { return base.Required; }
			set { base.Required = value; }
		}

		#endregion

		public EformComboBox() : base() { }
	}


	[DefaultProperty("Text"), ToolboxData("<{0}:EformDropDownList runat=server></{0}:EformDropDownList>")]
	public class EformDropDownList : CaisisSelect, IEformInputField  // rename --> EformDropDownList
	{
		#region private instance members
		private string recordId;
		private string parentRecordId;
		#endregion

		#region IEformInputField Members

		public string RecordId
		{
			get { return recordId; }
			set { recordId = value; }
		}

		public string ParentRecordId
		{
			get { return parentRecordId; }
			set { parentRecordId = value; }
		}

		#endregion

		#region ICaisisInputControl Members

		public new string Table
		{
			get { return base.Table; }
			set { base.Table = value; }
		}

		public new string Field
		{
			get { return base.Field; }
			set { base.Field = value; }
		}
		
		public new string FieldLabel
		{
			get { return base.FieldLabel; }
			set { base.FieldLabel = value; }
		}
		
		public new bool Required
		{
			get { return base.Required; }
			set { base.Required = value; }
		}

		#endregion

		#region enable hidden stuff
		private string enableHiddenOnUIEvent;

		public string EnableHiddenOnUIEvent
		{
			get { return enableHiddenOnUIEvent; }
			set { enableHiddenOnUIEvent = value; }
		}
		#endregion

		#region allow adding functionality to the client-side onchange event
		private string appendToOnChange;

		public string AppendToOnChange
		{
			get { return appendToOnChange; }
			set { appendToOnChange = value; }
		}
		#endregion

		public EformDropDownList() : base() { }

		protected override void OnPreRender(EventArgs e)
		{
			base.OnPreRender (e);
			_EnableHidden.AddEnableHiddenOnSelectAttributes(this, this.enableHiddenOnUIEvent);
			
			if (this.appendToOnChange != null && !"".Equals(this.appendToOnChange))
			{
				string oce = this.Attributes["onchange"];
				if (oce == null)
				{
					this.Attributes["onchange"] = this.appendToOnChange;
				}
				else
				{
					if (oce.Trim().EndsWith(";"))
					{
						this.Attributes["onchange"] = oce + " " + this.appendToOnChange;

⌨️ 快捷键说明

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