📄 eformcontrols.cs
字号:
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 + -