|
using System;
using System.ComponentModel;
using System.Drawing;
using System.Web.UI;
using ASP = System.Web.UI.WebControls;
namespace Anthem
{
/// <summary>
/// Creates an updatable control that compares the value entered by the user in an input control with the value entered in another input control, or with a constant value.
/// </summary>
[ToolboxBitmap(typeof(ASP.CompareValidator))]
public class CompareValidator : ASP.CompareValidator, IUpdatableControl
{
#region Unique Anthem control code
private const string parentTagName = "span";
/// <summary>
/// Renders the server control wrapped in an additional element so that the
/// element.innerHTML can be updated after a callback.
/// </summary>
protected override void Render(HtmlTextWriter writer)
{
#if !V2
bool DesignMode = this.Context == null;
#endif
if (!DesignMode)
{
Anthem.Manager.WriteBeginControlMarker(writer, parentTagName, this);
}
if (Visible)
{
base.Render(writer);
}
if (!DesignMode)
{
Anthem.Manager.WriteEndControlMarker(writer, parentTagName, this);
}
}
#endregion
#region IUpdatableControl implementation
/// <summary>
/// Gets or sets a value indicating whether the control should be updated after each callback.
/// Also see <see cref="UpdateAfterCallBack"/>.
/// </summary>
/// <value>
/// <strong>true</strong> if the the control should be updated; otherwise,
/// <strong>false</strong>. The default is <strong>false</strong>.
/// </value>
/// <example>
/// <code lang="CS" description="This is normally used declaratively as shown here.">
/// <anthem:Label id="label" runat="server" AutoUpdateAfterCallBack="true" />
/// </code>
/// </example>
[Category("Anthem")]
[DefaultValue(false)]
[Description("True if this control should be updated after each callback.")]
public virtual bool AutoUpdateAfterCallBack
{
get
{
object obj = this.ViewState["AutoUpdateAfterCallBack"];
if (obj == null)
return false;
else
return (bool)obj;
}
set
{
if (value) UpdateAfterCallBack = true;
ViewState["AutoUpdateAfterCallBack"] = value;
}
}
private bool _updateAfterCallBack = false;
/// <summary>
/// Gets or sets a value which indicates whether the control should be updated after the current callback.
/// Also see <see cref="AutoUpdateAfterCallBack"/>.
/// </summary>
/// <value>
/// <strong>true</strong> if the the control should be updated; otherwise,
/// <strong>false</strong>. The default is <strong>false</strong>.
/// </value>
/// <example>
/// <code lang="CS" description="This is normally used in server code as shown here.">
/// this.Label = "Count = " + count;
/// this.Label.UpdateAfterCallBack = true;
/// </code>
/// </example>
[Browsable(false)]
[DefaultValue(false)]
public virtual bool UpdateAfterCallBack
{
get { return _updateAfterCallBack; }
set { _updateAfterCallBack = value; }
}
#endregion
#region Common Anthem control code
/// <summary>
/// Raises the <see cref="System.Web.UI.Control.Load"/> event and registers the control
/// with <see cref="Anthem.Manager"/>.
/// </summary>
/// <param name="e">A <see cref="System.EventArgs"/>.</param>
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Anthem.Manager.Register(this);
}
#if V2
/// <summary>
/// Forces the server control to output content and trace information.
/// </summary>
public override void RenderControl(HtmlTextWriter writer)
{
base.Visible = true;
base.RenderControl(writer);
}
#endif
/// <summary>
/// Overrides the Visible property so that Anthem.Manager can track the visibility.
/// </summary>
/// <value>
/// <strong>true</strong> if the control is rendered on the client; otherwise
/// <strong>false</strong>. The default is <strong>true</strong>.
/// </value>
public override bool Visible
{
get
{
#if !V2
bool DesignMode = this.Context == null;
#endif
return Anthem.Manager.GetControlVisible(this, ViewState, DesignMode);
}
set { Anthem.Manager.SetControlVisible(ViewState, value); }
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Oleg Sobol has been developing web applications in ASP.NET using VB.NET for the past three years. Currently working for a leading online higher education provider, developing new online initiatives and supporting multiple education platforms.