4 Answers, 1 is accepted
0

Shinu
Top achievements
Rank 2
answered on 25 Jul 2008, 06:36 AM
Hi Richard,
I have found the forum link which discuss about built-in validators with Grid column. Go through the link and see if it helps.
How to customize a GridColum with built-in (default) validators
Thanks
Shinu.
I have found the forum link which discuss about built-in validators with Grid column. Go through the link and see if it helps.
How to customize a GridColum with built-in (default) validators
Thanks
Shinu.
0

Richard
Top achievements
Rank 1
answered on 25 Jul 2008, 07:28 PM
Thanks for the link. I have expanded on the suggestions there to create an extended bound column class with an assortment of validators that can be turned on selectively.
I still think this kind of thing would be handy 'out of the box' instead of as a user extension :)
Example column using a RequiredFieldValidator
I still think this kind of thing would be handy 'out of the box' instead of as a user extension :)
using System; |
using System.ComponentModel; |
using System.Web.UI; |
using System.Web.UI.WebControls; |
using Telerik.Web.UI; |
/// <summary> |
/// Extension to telerik:GridBoundColumn |
/// adding a selection of Validators that can |
/// be turned on and used as required |
/// </summary> |
namespace JVD.WebControls |
{ |
public class ValidatorBoundColumn : GridBoundColumn |
{ |
#region Constructor |
public ValidatorBoundColumn() |
{ |
RequiredFieldValidator = new RequiredFieldValidator(); |
CompareValidator1 = new CompareValidator(); |
CompareValidator2 = new CompareValidator(); |
RegexValidator = new RegularExpressionValidator(); |
RangeValidator = new RangeValidator(); |
CustomValidator = new CustomValidator(); |
} |
#endregion Constructor |
#region Properties |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateRequired { get; set; } |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateCompare1 { get; set; } |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateCompare2 { get; set; } |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateRegex { get; set; } |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateRange { get; set; } |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateCustom { get; set; } |
#endregion Properties |
#region Accessors |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public RequiredFieldValidator RequiredFieldValidator { get; private set; } |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public CompareValidator CompareValidator1 { get; private set; } |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public CompareValidator CompareValidator2 { get; private set; } |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public RegularExpressionValidator RegexValidator { get; private set; } |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public RangeValidator RangeValidator { get; private set; } |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public CustomValidator CustomValidator { get; private set; } |
#endregion Accessors |
#region Overrides |
public override void InitializeCell(TableCell cell, int columnIndex, GridItem inItem) |
{ |
base.InitializeCell(cell, columnIndex, inItem); |
if (inItem.IsInEditMode) |
{ |
string lBaseID = cell.ClientID; |
string lControlID = String.Format("{0}_TextBox", DataField); |
cell.Controls[0].ID = lControlID; |
if (ValidateRequired) |
{ |
RequiredFieldValidator.ID = lBaseID + "_RequiredFieldValidator"; |
RequiredFieldValidator.ControlToValidate = lControlID; |
cell.Controls.Add(RequiredFieldValidator); |
} |
if (ValidateCompare1) |
{ |
CompareValidator1.ID = lBaseID + "_CompareValidator1"; |
CompareValidator1.ControlToValidate = lControlID; |
cell.Controls.Add(CompareValidator1); |
} |
if (ValidateCompare2) |
{ |
CompareValidator2.ID = lBaseID + "_CompareValidator2"; |
CompareValidator2.ControlToValidate = lControlID; |
cell.Controls.Add(CompareValidator2); |
} |
if (ValidateRegex) |
{ |
RegexValidator.ID = lBaseID + "_RegexValidator"; |
RegexValidator.ControlToValidate = lControlID; |
cell.Controls.Add(RegexValidator); |
} |
if (ValidateRange) |
{ |
RangeValidator.ID = lBaseID + "_RangeValidator"; |
RangeValidator.ControlToValidate = lControlID; |
cell.Controls.Add(RangeValidator); |
} |
if (ValidateCustom) |
{ |
CustomValidator.ID = lBaseID + "_CustomValidator"; |
CustomValidator.ControlToValidate = lControlID; |
cell.Controls.Add(CustomValidator); |
} |
} |
} |
#endregion Overrides |
} |
} |
Example column using a RequiredFieldValidator
<Columns> |
<JVD:ValidatorBoundColumn UniqueName="Description" DataField="Description" ValidateRequired="true"> |
<RequiredFieldValidator Display="Dynamic" SetFocusOnError ="true" ErrorMessage="<%$ Resources:JVD, Validation_Description_Required %>" /> |
</JVD:ValidatorBoundColumn> |
</Columns> |
0
Accepted
Hello Richard,
Thank you for the suggestion - I will forward it to our development department for further consideration. If this turns out to be a common request, you may see it included in a future version of RadGrid.
At this point you may consider the solution pointed by Shinu or extending the built-in GridBoundColumn to include validator controls in it as you already did. We appreciate posting your implementation in our public forums - I updated your Telerik points for the involvement.
Kind regards,
Stephen
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
Thank you for the suggestion - I will forward it to our development department for further consideration. If this turns out to be a common request, you may see it included in a future version of RadGrid.
At this point you may consider the solution pointed by Shinu or extending the built-in GridBoundColumn to include validator controls in it as you already did. We appreciate posting your implementation in our public forums - I updated your Telerik points for the involvement.
Kind regards,
Stephen
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
0

Richard
Top achievements
Rank 1
answered on 28 Jul 2008, 06:58 PM
I discovered today that my column class as posted above will only work
in a top-level grid. To work in a detail grid it needs a couple more
overrides. Below is the class with the overrides added, plus a version
for DateTime columns (no regex validator and only one compare validator
- as a note, I included two compare validators in the bound column so
that I can use one to compare datatype and the other to compare value.
using System; |
using System.ComponentModel; |
using System.Web.UI; |
using System.Web.UI.WebControls; |
using Telerik.Web.UI; |
/// <summary> |
/// Extension to telerik:GridBoundColumn |
/// adding a selection of Validators that can |
/// be turned on and used as required |
/// </summary> |
namespace JVD.WebControls |
{ |
public class ValidatorBoundColumn : GridBoundColumn |
{ |
#region Constructor |
public ValidatorBoundColumn() |
{ |
RequiredFieldValidator = new RequiredFieldValidator(); |
CompareValidator1 = new CompareValidator(); |
CompareValidator2 = new CompareValidator(); |
RegexValidator = new RegularExpressionValidator(); |
RangeValidator = new RangeValidator(); |
CustomValidator = new CustomValidator(); |
} |
#endregion Constructor |
#region Properties |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateRequired { get; set; } |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateCompare1 { get; set; } |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateCompare2 { get; set; } |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateRegex { get; set; } |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateRange { get; set; } |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateCustom { get; set; } |
#endregion Properties |
#region Accessors |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public RequiredFieldValidator RequiredFieldValidator { get; private set; } |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public CompareValidator CompareValidator1 { get; private set; } |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public CompareValidator CompareValidator2 { get; private set; } |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public RegularExpressionValidator RegexValidator { get; private set; } |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public RangeValidator RangeValidator { get; private set; } |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public CustomValidator CustomValidator { get; private set; } |
#endregion Accessors |
#region Overrides |
public override void InitializeCell(TableCell cell, int columnIndex, GridItem inItem) |
{ |
base.InitializeCell(cell, columnIndex, inItem); |
if (inItem.IsInEditMode) |
{ |
string lBaseID = cell.ClientID; |
string lControlID = String.Format("{0}_TextBox", DataField); |
cell.Controls[0].ID = lControlID; |
if (ValidateRequired) |
{ |
RequiredFieldValidator.ID = lBaseID + "_RequiredFieldValidator"; |
RequiredFieldValidator.ControlToValidate = lControlID; |
cell.Controls.Add(RequiredFieldValidator); |
} |
if (ValidateCompare1) |
{ |
CompareValidator1.ID = lBaseID + "_CompareValidator1"; |
CompareValidator1.ControlToValidate = lControlID; |
cell.Controls.Add(CompareValidator1); |
} |
if (ValidateCompare2) |
{ |
CompareValidator2.ID = lBaseID + "_CompareValidator2"; |
CompareValidator2.ControlToValidate = lControlID; |
cell.Controls.Add(CompareValidator2); |
} |
if (ValidateRegex) |
{ |
RegexValidator.ID = lBaseID + "_RegexValidator"; |
RegexValidator.ControlToValidate = lControlID; |
cell.Controls.Add(RegexValidator); |
} |
if (ValidateRange) |
{ |
RangeValidator.ID = lBaseID + "_RangeValidator"; |
RangeValidator.ControlToValidate = lControlID; |
cell.Controls.Add(RangeValidator); |
} |
if (ValidateCustom) |
{ |
CustomValidator.ID = lBaseID + "_CustomValidator"; |
CustomValidator.ControlToValidate = lControlID; |
cell.Controls.Add(CustomValidator); |
} |
} |
} |
public override GridColumn Clone() |
{ |
ValidatorBoundColumn lReturn = new ValidatorBoundColumn(); |
lReturn.CopyBaseProperties(this); |
return lReturn; |
} |
protected override void CopyBaseProperties(GridColumn fromColumn) |
{ |
base.CopyBaseProperties(fromColumn); |
ValidatorBoundColumn lColumn = (ValidatorBoundColumn) fromColumn; |
CompareValidator1 = lColumn.CompareValidator1; |
CompareValidator2 = lColumn.CompareValidator2; |
CustomValidator = lColumn.CustomValidator; |
RangeValidator = lColumn.RangeValidator; |
RegexValidator = lColumn.RegexValidator; |
RequiredFieldValidator = lColumn.RequiredFieldValidator; |
ValidateCompare1 = lColumn.ValidateCompare1; |
ValidateCompare2 = lColumn.ValidateCompare2; |
ValidateCustom = lColumn.ValidateCustom; |
ValidateRange = lColumn.ValidateRange; |
ValidateRegex = lColumn.ValidateRegex; |
ValidateRequired = lColumn.ValidateRequired; |
} |
#endregion Overrides |
} |
} |
using System.ComponentModel; |
using System.Web.UI; |
using System.Web.UI.WebControls; |
using Telerik.Web.UI; |
/// <summary> |
/// Extension to telerik:GridDateTimeColumn |
/// adding a selection of Validators that can |
/// be turned on and used as required |
/// </summary> |
namespace JVD.WebControls |
{ |
public class ValidatorDateTimeColumn : GridDateTimeColumn |
{ |
#region Constructor |
public ValidatorDateTimeColumn() |
{ |
RequiredFieldValidator = new RequiredFieldValidator(); |
CompareValidator = new CompareValidator(); |
RangeValidator = new RangeValidator(); |
CustomValidator = new CustomValidator(); |
} |
#endregion Constructor |
#region Properties |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateRequired { get; set; } |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateCompare { get; set; } |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateRange { get; set; } |
[Category("Validation"), DefaultValue("false")] |
public bool ValidateCustom { get; set; } |
#endregion Properties |
#region Accessors |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public RequiredFieldValidator RequiredFieldValidator { get; private set; } |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public CompareValidator CompareValidator { get; private set; } |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public RangeValidator RangeValidator { get; private set; } |
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), |
PersistenceMode(PersistenceMode.InnerProperty)] |
public CustomValidator CustomValidator { get; private set; } |
#endregion Accessors |
#region Overrides |
public override void InitializeCell(TableCell cell, int columnIndex, GridItem inItem) |
{ |
base.InitializeCell(cell, columnIndex, inItem); |
if (inItem.IsInEditMode) |
{ |
string lBaseID = cell.ClientID; |
string lControlID = cell.Controls[0].ID; |
if (ValidateRequired) |
{ |
RequiredFieldValidator.ID = lBaseID + "_RequiredFieldValidator"; |
RequiredFieldValidator.ControlToValidate = lControlID; |
cell.Controls.Add(RequiredFieldValidator); |
} |
if (ValidateCompare) |
{ |
CompareValidator.ID = lBaseID + "_CompareValidator"; |
CompareValidator.ControlToValidate = lControlID; |
cell.Controls.Add(CompareValidator); |
} |
if (ValidateRange) |
{ |
RangeValidator.ID = lBaseID + "_RangeValidator"; |
RangeValidator.ControlToValidate = lControlID; |
cell.Controls.Add(RangeValidator); |
} |
if (ValidateCustom) |
{ |
CustomValidator.ID = lBaseID + "_CustomValidator"; |
CustomValidator.ControlToValidate = lControlID; |
cell.Controls.Add(CustomValidator); |
} |
} |
} |
public override GridColumn Clone() |
{ |
ValidatorDateTimeColumn lReturn = new ValidatorDateTimeColumn(); |
lReturn.CopyBaseProperties(this); |
return lReturn; |
} |
protected override void CopyBaseProperties(GridColumn fromColumn) |
{ |
base.CopyBaseProperties(fromColumn); |
ValidatorDateTimeColumn lColumn = (ValidatorDateTimeColumn)fromColumn; |
CompareValidator = lColumn.CompareValidator; |
CustomValidator = lColumn.CustomValidator; |
RangeValidator = lColumn.RangeValidator; |
RequiredFieldValidator = lColumn.RequiredFieldValidator; |
ValidateCompare = lColumn.ValidateCompare; |
ValidateCustom = lColumn.ValidateCustom; |
ValidateRange = lColumn.ValidateRange; |
ValidateRequired = lColumn.ValidateRequired; |
} |
#endregion Overrides |
} |
} |