📄 editface.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 + -