//
// System.Web.UI.WebControls.ValidationSummary.cs
//
// Authors:
// Gaurav Vaish (gvaish@iitk.ac.in)
// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
//
// (C) Gaurav Vaish (2002)
// (C) 2003 Andreas Nahr
//
using System;
using System.ComponentModel;
using System.Drawing;
using System.Web;
using System.Web.UI;
namespace System.Web.UI.WebControls
{
public class ValidationSummary : WebControl
{
private bool uplevelRender;
public ValidationSummary(): base(HtmlTextWriterTag.Div)
{
uplevelRender = false;
ForeColor = Color.Red;
}
[DefaultValue (typeof (ValidationSummaryDisplayMode), "BulletList"), Bindable (true), WebCategory ("Appearance")]
[WebSysDescription ("The type of how validation summaries should be displayed.")]
public ValidationSummaryDisplayMode DisplayMode
{
get
{
object o = ViewState["DisplayMode"];
if(o != null)
return (ValidationSummaryDisplayMode)o;
return ValidationSummaryDisplayMode.BulletList;
}
set
{
if(!Enum.IsDefined(typeof(ValidationSummaryDisplayMode), value))
throw new ArgumentException();
ViewState["DisplayMode"] = value;
}
}
[DefaultValue (true), WebCategory ("Behavior")]
[WebSysDescription ("Determines if the validation summary should be updated directly on the client using script code.")]
public bool EnableClientScript
{
get
{
object o = ViewState["EnableClientScript"];
if(o != null)
return (bool)o;
return true;
}
set
{
ViewState["EnableClientScript"] = value;
}
}
[DefaultValue (null)]
public override Color ForeColor
{
get
{
return base.ForeColor;
}
set
{
base.ForeColor = value;
}
}
[DefaultValue (false), Bindable (true), WebCategory ("Behavior")]
[WebSysDescription ("Determines if the validation summary should display a message box on the client if an uplevel browser is used.")]
public bool ShowMessageBox
{
get
{
object o = ViewState["ShowMessageBox"];
if(o != null)
return (bool)o;
return false;
}
set
{
ViewState["ShowMessageBox"] = value;
}
}
[DefaultValue (true), Bindable (true), WebCategory ("Behavior")]
[WebSysDescription ("Determines if the validation summary should display a summary.")]
public bool ShowSummary
{
get
{
object o = ViewState["ShowSummary"];
if(o != null)
return (bool)o;
return true;
}
set
{
ViewState["ShowSummary"] = value;
}
}
[DefaultValue (""), Bindable (true), WebCategory ("Appearance")]
[WebSysDescription ("A text that is diplayed as a header for the validation report.")]
public string HeaderText
{
get
{
object o = ViewState["HeaderText"];
if(o != null)
return (string)o;
return String.Empty;
}
set
{
ViewState["HeaderText"] = value;
}
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);
if(uplevelRender)
{
if(ID == null || ID.Length == 0)
writer.AddAttribute("id", ClientID);
if(HeaderText.Length > 0)
writer.AddAttribute("headertext", HeaderText, true);
if(ShowMessageBox)
writer.AddAttribute("showmessagebox", "True");
if(!ShowSummary)
writer.AddAttribute("showsummary", "False");
if(DisplayMode != ValidationSummaryDisplayMode.BulletList)
{
writer.AddAttribute("displaymode", PropertyConverter.EnumToString(typeof(ValidationSummaryDisplayMode), DisplayMode));
}
}
}
protected override void OnPreRender(EventArgs e)
{
}
protected override void Render(HtmlTextWriter writer)
{
if (!base.Enabled) return;
string[] messages;
bool toDisplay;
bool showSummary;
if (base.Site != null && base.Site.DesignMode)
{
showSummary = true;
messages = new string[]{HttpRuntime.FormatResourceString("ValSummary_error_message_1"),
HttpRuntime.FormatResourceString("ValSummary_error_message_2")};
toDisplay = true;
uplevelRender = false;
}
else
{
showSummary = false;
messages = null;
//Messages count
int numOfMsg = 0;
for (int i = 0; i < base.Page.Validators.Count; i++)
{
IValidator currentValidator = base.Page.Validators[i];
if (!currentValidator.IsValid)
{
showSummary = true;
if (currentValidator.ErrorMessage != null &&
currentValidator.ErrorMessage.Length != 0)
numOfMsg++;
}
}
if (numOfMsg != 0)
{
messages = new string[(int)numOfMsg];
int cur_msg = 0;
for (int i = 0; i < base.Page.Validators.Count; i++)
{
IValidator currentValidator = base.Page.Validators[i];
if (!currentValidator.IsValid &&
currentValidator.ErrorMessage != null &&
currentValidator.ErrorMessage.Length != 0)
messages[cur_msg++] = String.Copy(currentValidator.ErrorMessage);
}
}
toDisplay = ShowSummary ? showSummary : false;
if (!toDisplay && uplevelRender)
base.Style["display"] = "none";
}
if (base.Page != null)
{
base.Page.VerifyRenderingInServerForm(this);
}
bool tagRequired = !uplevelRender ? toDisplay : true;
if (tagRequired)
{
base.RenderBeginTag(writer);
}
if (toDisplay)
{
string str1, str2, str3, str4, str5;
switch (DisplayMode)
{
case ValidationSummaryDisplayMode.List:
str1 = "
";
str2 = "";
str3 = "";
str4 = "
";
str5 = "";
break;
case ValidationSummaryDisplayMode.SingleParagraph:
str1 = " ";
str2 = "";
str3 = "";
str4 = " ";
str5 = "
";
break;
default:
str1 = "";
str2 = "