2011-04-25 129 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>