📄 caisisinputcontrols.cs
字号:
using System;
using System.Collections.Specialized;
using System.ComponentModel;
using System.IO;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI;
namespace Caisis.UI.Core.Classes.CustomControls
{
#region interfaces
public interface ICaisisInputControl
{
string Table
{
get;
set;
}
string Field
{
get;
set;
}
string FieldLabel
{
get;
set;
}
bool Required
{
get;
set;
}
bool ShowHelpBubble
{
get;
set;
}
string HelpDescription
{
get;
set;
}
bool ShowLabel
{
get;
set;
}
}
#endregion
[DefaultProperty("Text"), ToolboxData("<{0}:CaisisTextBox runat=server></{0}:CaisisTextBox>")]
public class CaisisTextBox : TextBox, ICaisisInputControl
{
public CaisisTextBox() : base()
{
showLabel = true;
}
#region private instance members
private string table;
private string field;
private string fieldLabel;
private bool required;
private bool showHelpBubble;
private string helpDescription;
private bool showLabel;
private bool showNumberPad;
private bool showCalendar;
private bool calcDate;
#endregion
#region protected instance members
protected HtmlImage numberPad;
protected HtmlImage calendar;
protected Label inputFieldLabel;
#endregion
#region Properties required to implement ICaisisInputControl
public string Table
{
get { return table; }
set { table = value; }
}
public string Field
{
get { return field; }
set { field = value; }
}
public string FieldLabel
{
get { return fieldLabel; }
set { fieldLabel = value; }
}
public bool Required
{
get { return required; }
set { required = value; }
}
public bool ShowHelpBubble
{
get { return showHelpBubble; }
set { showHelpBubble = value; }
}
public string HelpDescription
{
get { return helpDescription; }
set { helpDescription = value; }
}
public bool ShowLabel
{
get { return showLabel; }
set { showLabel = value; }
}
#endregion
#region TextBox-specific Properties
public bool ShowNumberPad
{
get { return showNumberPad; }
set { showNumberPad = value; }
}
public bool ShowCalendar
{
get { return showCalendar; }
set { showCalendar = value; }
}
/// <summary>
/// Intepretes the date entered into the date text field into the readonly date field
/// </summary>
public bool CalcDate
{
get { return calcDate; }
set { calcDate = value; }
}
#endregion
protected override void OnInit(EventArgs e)
{
if(FieldLabel != null && FieldLabel.Length > 0)
{
inputFieldLabel = new Label();
inputFieldLabel.Text = FieldLabel + " ";
}
if(ShowNumberPad)
{
numberPad = new HtmlImage();
numberPad.Src = "~/Images/icon_NumPad.gif";
numberPad.Align = "absMiddle"; //onclick="showNumPad('_ctl0_ORDateText');
numberPad.Attributes.Add("vspace", "1");
numberPad.Attributes.Add("hspace", "1");
numberPad.Attributes.Add("onClick", "showNumPad('" + this.ClientID + "')");
numberPad.Attributes["class"] = "imageButtonOn";
Controls.Add(numberPad);
}
if(ShowCalendar)
{
calendar = new HtmlImage();
calendar.Src = "~/Images/calendar/cal.gif";
calendar.Align = "absMiddle";
calendar.Attributes.Add("hspace", "3");
calendar.Width = 16;
calendar.Height = 16;
calendar.ID = this.ID + "Cal";
calendar.Attributes.Add("onclick", "showCal(this, dataForm." + this.ClientID.ToString() + ");");
Controls.Add(calendar);
}
// NOTE, for this to work the hard date field MUST be the same as the date text field without "Text" in it
if(CalcDate)
{
string calcDateFieldClientID = this.ClientID.Replace("Text", ""); // remove "Text" to get client Id of hard date field
this.Attributes.Add("onBlur", "fuzzyDate(" + this.ClientID.ToString() + ", " + calcDateFieldClientID + ");");
}
}
protected override void Render(HtmlTextWriter w)
{
try
{
// No need for ViewState
this.EnableViewState = false;
// only render when visible
if(this.Visible == true)
{
if(showLabel && FieldLabel != null && FieldLabel.Length > 0)
{
inputFieldLabel.RenderControl(w);
}
base.Render(w); // renders this control; sequence matters
if(ShowNumberPad)
{
numberPad.RenderControl(w);
}
if(ShowCalendar)
{
calendar.RenderControl(w);
}
}
}
catch(Exception ex)
{
w.Write("Error building CategorizedCheckBoxList:<br>");
w.Write(ex.Message);
}
}
}
[DefaultProperty("Text"), ToolboxData("<{0}:CaisisTextArea runat=server></{0}:CaisisTextArea>")]
public class CaisisTextArea : TextBox, ICaisisInputControl
{
#region private instance members
private string table;
private string field;
private string fieldLabel;
private bool required;
private bool showHelpBubble;
private bool showLabel;
private string helpDescription;
#endregion
#region protected instance members
protected Label inputFieldLabel;
#endregion
#region Properties required to implement ICaisisInputControl
public string Table
{
get { return table; }
set { table = value; }
}
public string Field
{
get { return field; }
set { field = value; }
}
public string FieldLabel
{
get { return fieldLabel; }
set { fieldLabel = value; }
}
public bool Required
{
get { return required; }
set { required = value; }
}
public bool ShowHelpBubble
{
get { return showHelpBubble; }
set { showHelpBubble = value; }
}
public string HelpDescription
{
get { return helpDescription; }
set { helpDescription = value; }
}
public bool ShowLabel
{
get { return showLabel; }
set { showLabel = value; }
}
#endregion
public CaisisTextArea() : base()
{
base.TextMode = TextBoxMode.MultiLine;
showLabel = true;
}
protected override void OnInit(EventArgs e)
{
if(FieldLabel != null && FieldLabel.Length > 0)
{
inputFieldLabel = new Label();
inputFieldLabel.Text = FieldLabel + " ";
}
}
protected override void Render(HtmlTextWriter w)
{
if(showLabel && FieldLabel != null && FieldLabel.Length > 0)
{
inputFieldLabel.RenderControl(w);
}
base.Render(w);
}
}
// note, this is not a WebControl; there is no asp.net hidden webcontrol
[DefaultProperty("Text"), ToolboxData("<{0}:CaisisHidden runat=server></{0}:CaisisHidden>")]
public class CaisisHidden : HtmlInputHidden, ICaisisInputControl
{
public CaisisHidden() : base() { }
#region private members
private string fieldLabel;
private string table;
private string field;
private bool required;
private bool showHelpBubble;
private bool showLabel;
private string helpDescription;
#endregion
#region Properties required to implement ICaisisInputControl
public string Table
{
get { return table; }
set { table = value; }
}
public string Field
{
get { return field; }
set { field = value; }
}
public string FieldLabel
{
get { return fieldLabel; }
set { fieldLabel = value; }
}
public bool Required
{
get { return required; }
set { required = value; }
}
public bool ShowHelpBubble
{
get { return showHelpBubble; }
set { showHelpBubble = value; }
}
public string HelpDescription
{
get { return helpDescription; }
set { helpDescription = value; }
}
public bool ShowLabel
{
get { return showLabel; }
set { showLabel = value; }
}
#endregion
/// <summary>
/// Renders the hidden input tag, but not the FieldLabel, since this is a hidden control
/// </summary>
/// <param name="writer"></param>
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
}
}
[DefaultProperty("Text"), ToolboxData("<{0}:CaisisSelect runat=server></{0}:CaisisSelect>")]
public class CaisisSelect : DropDownList, ICaisisInputControl
{
public CaisisSelect() : base()
{
showLabel = true;
}
private string table;
private string field;
private string fieldLabel;
private bool required;
private bool showHelpBubble;
private bool showLabel;
private string helpDescription;
private string lookupCode;
protected Label inputFieldLabel;
#region Properties required to implement ICaisisInputControl
public string Table
{
get { return table; }
set { table = value; }
}
public string Field
{
get { return field; }
set { field = value; }
}
public string FieldLabel
{
get { return fieldLabel; }
set { fieldLabel = value; }
}
public bool Required
{
get { return required; }
set { required = value; }
}
public bool ShowHelpBubble
{
get { return showHelpBubble; }
set { showHelpBubble = value; }
}
public string HelpDescription
{
get { return helpDescription; }
set { helpDescription = value; }
}
public bool ShowLabel
{
get { return showLabel; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -