-
Notifications
You must be signed in to change notification settings - Fork 1
/
ValidatedForm.cs
127 lines (98 loc) · 3.57 KB
/
ValidatedForm.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI;
using Spaetzel.UtilityLibrary;
namespace Spaetzel.Controls
{
public class ValidatedForm : CompositeControl
{
private List<Label> _labels;
private List<Control> _controls;
private List<BaseValidator> _validators;
public ValidatedForm()
{
_labels = new List<Label>();
_controls = new List<Control>();
_validators = new List<BaseValidator>();
}
protected void AddLabel(Label newLabel)
{
_labels.Add(newLabel);
}
protected void AddControl(Control newControl)
{
_controls.Add(newControl);
}
protected void AddValidator(BaseValidator newValidator)
{
newValidator.Display = ValidatorDisplay.None;
_validators.Add(newValidator);
this.Controls.Add(newValidator);
}
protected HtmlTableRow GenerateTableRow(Label label, bool required, Control control, Label description)
{
if (required)
{
if (control.ID.IsNullOrEmpty())
{
throw new ArgumentException(String.Format("ID Must be entered for required fields, {0}", label.Text));
}
RequiredFieldValidator validator = new RequiredFieldValidator()
{
ControlToValidate = control.ID,
ErrorMessage = String.Format("{0} is required", label.Text)
};
AddValidator(validator);
}
return GenerateUnvalidatedTableRow(label, required, control, description);
}
protected HtmlTableRow GenerateUnvalidatedTableRow(Label label, bool required, Control control, Label description)
{
HtmlTableRow row = new HtmlTableRow();
HtmlTableCell labelCell = new HtmlTableCell();
AddLabel(label);
label.CssClass = "formLabel";
labelCell.Controls.Add(label);
if (description != null)
{
AddLabel(description);
description.CssClass = "formDescription";
labelCell.Controls.Add(description);
}
if (required)
{
labelCell.Controls.Add(GenerateRequiredLabel());
}
row.Cells.Add(labelCell);
HtmlTableCell controlCell = new HtmlTableCell();
AddControl(control);
controlCell.Controls.Add(control);
row.Cells.Add(controlCell);
return row;
}
protected HtmlTableRow GenerateTableRow(string label, bool required, Control control)
{
return GenerateTableRow(label, required, control, "");
}
protected HtmlTableRow GenerateTableRow(string label, bool required, Control control, string description)
{
Label labelLabel = new Label();
labelLabel.Text = label;
Label descriptionLabel = new Label();
descriptionLabel.Text = description;
return GenerateTableRow(labelLabel, required, control, descriptionLabel);
}
private Label GenerateRequiredLabel()
{
Label output = new Label();
output.Text = "*";
output.ForeColor = System.Drawing.Color.Red;
AddLabel(output);
return output;
}
}
}