2011-04-25 128 views
0

里面这是我的代码:文本框的GridView验证

<asp:TemplateField HeaderText="Email"> 
    <ItemTemplate> 
     <asp:TextBox ID="txtEmail" runat="server" Text='<%# Eval("Email") %>' Width="88px" CausesValidation="True" /> 
     <asp:RegularExpressionValidator runat="server" ErrorMessage="Enter a valid email id!" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="txtEmail" /> 
     <asp:RequiredFieldValidator runat="server" ErrorMessage="*" ControlToValidate="txtEmail" /> 
    </ItemTemplate> 
</asp:TemplateField> 
当我点击下一步按钮所需的字段验证不会导致确认其没有表现出任何差错和下页页面重新定向

请帮帮我。

+0

我在GridView的文本框,我想验证电子邮件ID,如果txtEmail为空则显示错误页面别的重定向到下一个页面.. – Rocky 2011-04-25 06:31:25

+0

不正确的文本是否会导致RegEx验证器验证? – abatishchev 2011-04-25 06:39:49

+0

你的代码中有一个错字:“ControlToValidate =”txtEmail />“(id后面没有尾随引号) – Dmitry 2011-04-25 06:43:01

回答

5

看看下面的代码。

enter image description here

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:GridView ID="grd" runat="server" AutoGenerateColumns="false"> 
      <Columns> 
      <asp:BoundField DataField="FirstName" HeaderText="FirstName" /> 
       <asp:TemplateField HeaderText="Email"> 

        <ItemTemplate> 
         <asp:TextBox ID="txtEmail" runat="server" Text='<%# Eval("Email") %>' Width="88px" 
          CausesValidation="True" /> 
         <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="Enter a valid email id!" 
          ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="txtEmail" /> 
         <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*" 
          ControlToValidate="txtEmail" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
      </Columns> 
     </asp:GridView> 
    </div> 
    <asp:Button ID="Button1" runat="server" Text="Button" CausesValidation="true" /> 
    </form> 
</body> 
</html> 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class Default4 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     var items = new[] { 
       new { FirstName = "Name1",Email="[email protected]" }, 
       new { FirstName = "Name2",Email="[email protected]" }, 
       new { FirstName = "Name3",Email="[email protected]" }}; 

     grd.DataSource = items; 

     grd.DataBind(); 
    } 
} 
1

您是否将Script Manager添加到您的项目中?

如果是这样,你的验证码没有错。

只是一个想法,也许你应该添加到验证控件EnableClientScript="false"

+0

我不使用任何ajax工具,所以它不强制在EnableClientScript =“false”后面添加脚本管理器 – Rocky 2011-04-25 06:49:28

+0

require字段不起作用 – Rocky 2011-04-25 06:59:57

5

有可能是与验证组的问题,您可以检查。

其次你需要在你的按钮控件中设置CausesValidation="true"

加上您的电子邮件正则表达式也不正确。

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* // yours 
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* // correct one 
+0

这2个正则表达式之间的唯一区别在于它允许在@ – ariel 2011-04-25 06:48:46

+0

但正则表达式导致错误只需要字段不会导致错误,当我点击去下一页按钮.. – Rocky 2011-04-25 06:50:45

+0

嗯,这是正确的正则表达式。 – 2011-04-25 06:51:06

0

您将需要检查是否的CausesValidation为您所点击下一个按钮启用。

而且除了尝试设置InitialValue- “”为必填字段验证

编辑

尝试修改代码以增加客户端脚本如

button.Attributes.Add("onclick","return methodname"); 
+0

ya其启用但要求字段不会导致验证。 – Rocky 2011-04-25 07:00:28

+0

我试过了,但它不能在btn上点击。 – Rocky 2011-04-25 07:41:43

+0

Rocky 2011-04-25 07:42:55

0
<script type="text/javascript" language="javascript"> 
function ValidateText(i) 
{ 
    if(i.value.length>0) 
    { 
    i.value = i.value.replace(/[^\d]+/g, ''); 
    } 
} 

</script> 

<asp:TemplateField > 
     <ItemTemplate> 
       <asp:TextBox ID="TextBox1" runat="server" onkeyup ="ValidateText(this);"></asp:TextBox> 
    </ItemTemplate> 

</asp:TemplateField> 

< /asp:TemplateField>