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

📄 editface.cs

📁 《Visual Basic案例开发》一书的源代码
💻 CS
字号:
using System;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.ComponentModel;

namespace _36Hang.Web.UI.WebControls
{
	[DefaultProperty("Title"), ToolboxData("<{0}:EditFace runat=server></{0}:EditFace>")]
	public class EditFace : WebControl, INamingContainer
	{
		private EditFaceItems _Items;
		private EditFaceCommands _Commands;
		private ImageClickEventHandler _ImageClickEventHandler;

		private EditFaceModeFilename ModeFilename;

		private HtmlTableCell _HtmlTableCell;

		public event EventHandler Click;

		public EditFace() : base()
		{
			_HtmlTableCell = new HtmlTableCell();
			_Items = new EditFaceItems();
			_Commands = new EditFaceCommands();
			_ImageClickEventHandler = new ImageClickEventHandler(this.ServerClicked);

			ModeFilename = new EditFaceModeFilename();
		}

		public string Pathname
		{
			get { if(ViewState["Pathname"] == null) return ""; else return (string)ViewState["Pathname"]; }
			set { ViewState["Pathname"] = value; }
		}

		public string Command
		{
			get
			{
				if(ViewState["Command"] == null)
				{
					string strTemp = "";
					for(int i=0; i<_Commands.Count; i++)
					{
						strTemp = strTemp + _Commands[i].ID + ",";
					}
					strTemp = strTemp.Substring(0,strTemp.Length - 1);
					return strTemp;
				}
				else
				{
					return (string)ViewState["Command"];
				}
			}
			set { ViewState["Command"] = value; }
		}

		public string Previous
		{
			get { if(ViewState["Previous"] == null) return ""; else return (string)ViewState["Previous"]; }
			set { ViewState["Previous"] = value; }
		}

		public void Refresh()
		{
			this.EnsureChildControls();

			_HtmlTableCell.InnerHtml = "";
			SetStruct();
			SetControl();
		}

		public EditFaceMode Mode
		{
			get { if(ViewState["Mode"] == null) return EditFaceMode.Default; else return (EditFaceMode)ViewState["Mode"]; }
			set { ViewState["Mode"] = value; }
		}

		public EditFaceItems Items
		{
			get { return this._Items; }
			set { this._Items = value; }
		}

		public EditFaceCommands Commands
		{
			get { return this._Commands; }
			set { this._Commands = value; }
		}

		protected virtual void OnClick(EventArgs e,string eventArgument)
		{
			if (Click != null)
			{
				for(int i=0; i<_Commands.Count; i++)
				{
					if(_Commands[i].ID == eventArgument)
					{
						Click(_Commands[i],e);
					}
				}
			}
		}

		private void ServerClicked(object sender, ImageClickEventArgs e)
		{
			for(int i=0; i<_Items.Count; i++)
			{
				switch(_Items[i].Type)
				{
					case "TextBox":
						_Items[i].TextBox.Value = GetValue(_Items[i].ID,_Items[i].Type);
						break;
					case "CheckBox":
						_Items[i].CheckBox.Value = Convert.ToBoolean(GetValue(_Items[i].ID,_Items[i].Type));
						break;
					case "DropDownList":
						_Items[i].DropDownList.Value = GetValue(_Items[i].ID,_Items[i].Type);
						break;
					case "Calendar":
						_Items[i].Calendar.Value = GetValue(_Items[i].ID,_Items[i].Type);
						break;
					default:
						_Items[i].Label.Value = GetValue(_Items[i].ID,_Items[i].Type);
						break;
				}
			}

			HtmlInputImage objHtmlInputImage = (HtmlInputImage)sender;
			for(int i=0; i<_Commands.Count; i++)
			{
				if(objHtmlInputImage.ID == _Commands[i].ID)
				{
					this.Command = _Commands[i].Command;
				}
			}

			OnClick(e,objHtmlInputImage.ID);
		
			this.EnsureChildControls();

			_HtmlTableCell.InnerHtml = "";
			SetStruct();
			SetControl();
		}

		private string GetValue(string ID,string Type)
		{
			Control objControl;
			for(int i=0; i<base.Page.Controls.Count; i++)
			{
				objControl = (Control)base.Page.Controls[i];
				if(objControl.ID != "")
				{
					for(int j=0; j<base.Page.Controls[i].Controls.Count; j++)
					{
						objControl = (Control)base.Page.Controls[i].Controls[j];
						if(objControl.ID == this.ID)
						{
							switch(Type)
							{
								case "TextBox":
									TextBox objTextBox;
									objTextBox = (TextBox)base.Page.FindControl(this.ID + ":" + ID);
									return objTextBox.Text;
								case "CheckBox":
									CheckBox objCheckBox;
									objCheckBox = (CheckBox)base.Page.FindControl(this.ID + ":" + ID);
									return (objCheckBox.Checked == true ? "True" : "False");
								case "DropDownList":
									DropDownList objDropDownList;
									objDropDownList = (DropDownList)base.Page.FindControl(this.ID + ":" + ID);
									return objDropDownList.SelectedValue;
								case "Calendar":
									_36Hang.Web.UI.WebControls.Calendar objCalendar;
									objCalendar = (_36Hang.Web.UI.WebControls.Calendar)base.Page.FindControl(this.ID + ":" + ID);
									return objCalendar.Text;
								default:
									Label objLabel;
									objLabel = (Label)base.Page.FindControl(this.ID + ":" + ID);
									return objLabel.Text;
							}
						}
					}
				}
			}
			return null;
		}

		protected override void OnLoad(EventArgs e)
		{
			base.OnLoad (e);

			if(base.Page.IsPostBack != false)
			{
				SetStruct();
				SetControl();
			}
		}

		protected override void Render(HtmlTextWriter objHtmlTextWriter)
		{
			this.EnsureChildControls();
			base.Render(objHtmlTextWriter);
		}

		protected override void CreateChildControls()
		{
			Controls.Add(new LiteralControl("<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#d6dff7\">" + "\n"));
			Controls.Add(new LiteralControl("	<tr class=\"EditFace\">" + "\n"));
			Controls.Add(_HtmlTableCell);
			Controls.Add(new LiteralControl("	</tr>" + "\n"));
			Controls.Add(new LiteralControl("</table>" + "\n"));

			if(base.Page.IsPostBack != true)
			{
				SetStruct();
				SetControl();
			}
		}

		private void SetStruct()
		{
			this.ModeFilename.Default = this.Pathname + "Includes/EditFace/Default.css";
			this.ModeFilename.Office2003 = this.Pathname + "Includes/EditFace/Office2003.css";

			string strModeFilename = this.ModeFilename.Default;
			if(this.Mode == EditFaceMode.Office2003) strModeFilename = this.ModeFilename.Office2003;
			_HtmlTableCell.Controls.Add(new LiteralControl("<link href=\"" + strModeFilename + "\" type=\"text/css\" rel=\"stylesheet\">" + "\n"));
		}

		private void SetControl()
		{
			_HtmlTableCell.Controls.Add(new LiteralControl("<table width=\"100%\" cellpadding=\"4\" cellspacing=\"1\" class=\"EditFace_Border\">" + "\n"));
			_HtmlTableCell.Controls.Add(new LiteralControl("	<tr>" + "\n"));
			_HtmlTableCell.Controls.Add(new LiteralControl("		<td class=\"EditFace_Background\">" + "\n"));

			for(int i=0; i<_Items.Count; i++)
			{
				_HtmlTableCell.Controls.Add(new LiteralControl("			<table width=\"100%\" height=\"20\" cellspacing=\"0\" cellpadding=\"0\">" + "\n"));
				_HtmlTableCell.Controls.Add(new LiteralControl("				<tr>" + "\n"));
				_HtmlTableCell.Controls.Add(new LiteralControl("					<td width=\"30%\">" + "\n"));
				switch(_Items[i].Type)
				{
					case "TextBox":
						_HtmlTableCell.Controls.Add(new LiteralControl("						" + _Items[i].Caption + "\n"));
						break;
					case "CheckBox":
						_HtmlTableCell.Controls.Add(new LiteralControl("						" + _Items[i].Caption + "\n"));
						break;
					case "DropDownList":
						_HtmlTableCell.Controls.Add(new LiteralControl("						" + _Items[i].Caption + "\n"));
						break;
					case "Calendar":
						_HtmlTableCell.Controls.Add(new LiteralControl("						" + _Items[i].Caption + "\n"));
						break;
					default:
						_HtmlTableCell.Controls.Add(new LiteralControl("						" + _Items[i].Caption + "\n"));
						break;
				}
				_HtmlTableCell.Controls.Add(new LiteralControl("					</td>" + "\n"));
				_HtmlTableCell.Controls.Add(new LiteralControl("					<td width=\"70%\">" + "\n"));
				switch(_Items[i].Type)
				{
					case "TextBox":
						TextBox objTextBox = new TextBox();
						objTextBox.ID = _Items[i].ID;
						objTextBox.Text = _Items[i].TextBox.Value;
						if(_Items[i].TextBox.Length > 0) objTextBox.MaxLength = _Items[i].TextBox.Length;
						if(_Items[i].TextBox.Mode == "MultiLine") objTextBox.TextMode = TextBoxMode.MultiLine;
						if(_Items[i].TextBox.Mode == "Password") objTextBox.TextMode = TextBoxMode.Password;
						if(_Items[i].TextBox.Rows > 0) objTextBox.Rows = _Items[i].TextBox.Rows;
						objTextBox.Style.Add("width","100%");
						objTextBox.Attributes.Add("class","EditFace_TextBox");
						_HtmlTableCell.Controls.Add(objTextBox);
						break;
					case "CheckBox":
						CheckBox objCheckBox = new CheckBox();
						objCheckBox.ID = _Items[i].ID;
						objCheckBox.Checked = _Items[i].CheckBox.Value;
						objCheckBox.Attributes.Add("class","EditFace_CheckBox");
						_HtmlTableCell.Controls.Add(objCheckBox);
						break;
					case "DropDownList":
						DropDownList objDropDownList = new DropDownList();
						objDropDownList.ID = _Items[i].ID;
						for(int j=0; j<_Items[i].DropDownList.Items.Count; j++)
						{
							ListItem objListItem = new ListItem();
							objListItem.Text = _Items[i].DropDownList.Items[j].Text;
							objListItem.Value = _Items[i].DropDownList.Items[j].Value;
							objDropDownList.Items.Add(objListItem);
							if(_Items[i].DropDownList.Items[j].Value == _Items[i].DropDownList.Value) objListItem.Selected = true;
						}
						objDropDownList.Style.Add("width","100%");
						objDropDownList.Attributes.Add("class","EditFace_DropDownList");
						_HtmlTableCell.Controls.Add(objDropDownList);
						break;
					case "Calendar":
						_36Hang.Web.UI.WebControls.Calendar objCalendar = new _36Hang.Web.UI.WebControls.Calendar();
						objCalendar.Base = this.ID;
						objCalendar.Pathname = this.Pathname;
						objCalendar.ID = _Items[i].ID;
						objCalendar.Text = _Items[i].Calendar.Value;
						objCalendar.Style.Add("width","100%");
						objCalendar.Attributes.Add("class","EditFace_Calendar");
						_HtmlTableCell.Controls.Add(objCalendar);
						break;
					default:
						Label objLabel = new Label();
						objLabel.ID = _Items[i].ID;
						objLabel.Text = _Items[i].Label.Value;
						objLabel.Style.Add("width","100%");
						objLabel.Attributes.Add("class","EditFace_Label");
						_HtmlTableCell.Controls.Add(objLabel);
						break;
				}
				_HtmlTableCell.Controls.Add(new LiteralControl("					</td>" + "\n"));
				_HtmlTableCell.Controls.Add(new LiteralControl("				</tr>" + "\n"));
				_HtmlTableCell.Controls.Add(new LiteralControl("			</table>" + "\n"));
			}

			HtmlInputImage objHtmlInputImage;
			
			_HtmlTableCell.Controls.Add(new LiteralControl("			<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">" + "\n"));
			_HtmlTableCell.Controls.Add(new LiteralControl("				<tr>" + "\n"));
			_HtmlTableCell.Controls.Add(new LiteralControl("					<td align=\"right\">" + "\n"));
			_HtmlTableCell.Controls.Add(new LiteralControl("						<table cellspacing=\"0\" cellpadding=\"0\">" + "\n"));
			_HtmlTableCell.Controls.Add(new LiteralControl("							<tr>" + "\n"));
			
			for(int i=0; i<_Commands.Count; i++)
			{
				_HtmlTableCell.Controls.Add(new LiteralControl("								<td width=\"48\" class=\"EditFace_Command\" onmouseover=\"this.className='EditFace_CommandOver';\" onmouseout=\"this.className='EditFace_Command';\"" + (this.Command.IndexOf(_Commands[i].ID,0) >= 0 ? "" : " style=\"display:none\"") + ">"));
				objHtmlInputImage = new HtmlInputImage();
				objHtmlInputImage.ID = _Commands[i].ID;
				objHtmlInputImage.Src = _Commands[i].Filename;
				objHtmlInputImage.ServerClick += _ImageClickEventHandler;
				_HtmlTableCell.Controls.Add(objHtmlInputImage);
				_HtmlTableCell.Controls.Add(new LiteralControl("</td>" + "\n"));
			}

			_HtmlTableCell.Controls.Add(new LiteralControl("							</tr>" + "\n"));
			_HtmlTableCell.Controls.Add(new LiteralControl("						</table>" + "\n"));
			_HtmlTableCell.Controls.Add(new LiteralControl("					</td>" + "\n"));
			_HtmlTableCell.Controls.Add(new LiteralControl("				</tr>" + "\n"));
			_HtmlTableCell.Controls.Add(new LiteralControl("			</table>" + "\n"));

			_HtmlTableCell.Controls.Add(new LiteralControl("		</td>" + "\n"));
			_HtmlTableCell.Controls.Add(new LiteralControl("	</tr>" + "\n"));
			_HtmlTableCell.Controls.Add(new LiteralControl("</table>" + "\n"));
		}
	}
}

⌨️ 快捷键说明

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