Hi,
I am trying to access the GridView row(Updating row) in the custom validator server validate event.
I am getting this error: Unable to cast object of type 'System.Web.UI.WebControls.ContentPlaceHolder' to type 'System.Web.UI.WebControls.GridViewRow'..aspx page
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:CommandField ShowEditButton="True" ButtonType="Link" CausesValidation="True">
</asp:CommandField>
<asp:TemplateField HeaderText="Validation Test">
<ItemTemplate>
<asp:Label ID="Name" runat="server" Text='<%# Bind("Name")%>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"
Text='<%# Bind("Name")%>'></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server"
ErrorMessage="CustomValidator" Text="*"
onservervalidate="CustomValidator1_ServerValidate"
ValidateEmptyText="True"></asp:CustomValidator>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Code behind:
public void CustomValidator1_ServerValidate(object sender, System.Web.UI.WebControls.ServerValidateEventArgs args)
{
String nameRegex = "^[-a-zA-Z0-9-,. ]{1,40}";
CustomValidator custval = new CustomValidator();
custval = (CustomValidator)sender;
GridViewRow gvr = (GridViewRow)custval.NamingContainer;
try
{
switch (custval.ID.ToString())
{
case "CustomValidator1":
{
TextBox txtNm = (TextBox)gvr.FindControl("TextBox1");
if (txtNm.Text.Trim().Equals(string.Empty))
{
args.IsValid = false;
}
else if (!Regex.IsMatch(txtNm.Text.Trim(), nameRegex))
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
break;
}
}
catch (Exception ex)
{
}
finally
{
}
}
Please let me know how to access the GridViewRow.
Thanks