2016-05-23 53 views
3

我有一個GridView是其中的一列是一個文本框:不允許句號,逗號等,在GridView的文本框

<asp:GridView style="width:75%;float:left" 
    ID="gvPieceOutturns" 
    ShowHeaderWhenEmpty="false" 
    CssClass="tblResults" 
    runat="server" 
    OnRowDataBound="gvPieceOutturns_ItemDataBound"       
    DataKeyField="ID" 
    AutoGenerateColumns="false" 
    allowpaging="false"" /> 

    <Columns> 
     <asp:TemplateField HeaderText="Comment" SortExpression="MemComment"> 
      <ItemTemplate> 
      <asp:TextBox ID="txtMemComment" runat="server"></asp:TextBox> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

我想一些驗證添加到文本框,以防止用戶進入滿座,逗號等,只允許字母和數字。

我有一個被調用函數,當用戶關閉的選項卡文本框:

protected void UpdateMemOutturnComment(object sender, EventArgs e) 
{ 
    string Comment = hfMemOutturnComment.Value; 
} 

但是我怎麼提醒用戶,如果他們輸入無效字符? 一旦輸入無效字符,還是需要等到他們完成填充文本框後,纔有辦法提醒用戶?

回答

1

您可以使用標準的驗證一個字符串的RegularExpressionValidator和數字,並調用onkeypress事件文本框立即確認與警報消息:

<asp:TemplateField HeaderText="Comment" SortExpression="MemComment" ItemStyle-CssClass="memComment"> 
    <ItemTemplate> 
     <asp:TextBox ID="txtMemComment" runat="server" onkeypress="ValidateMemComment(event);" /> 
     <asp:RegularExpressionValidator ID="revMemComment" runat="server" CssClass="validatorMemComment" ControlToValidate="txtMemComment" ValidationExpression="^[a-zA-Z0-9]*$" Text="*" ErrorMessage="Invalid character" ForeColor="Red" Display="Dynamic" /> 
    </ItemTemplate> 
</asp:TemplateField> 

下面的CSS樣式類防止文本框,並在細胞中驗證之間換行符:

.memComment 
{ 
    white-space: nowrap; 
} 

在客戶端代碼onkeypress事件處理程序應該是這樣的:

<script type="text/javascript"> 
    function ValidateMemComment(event) { 
     var code = event.which || event.keyCode; 
     var isNumeric = (48 <= code && code <= 57); 
     var isUpperAlpha = (65 <= code && code <= 90); 
     var isLowerAlpha = (97 <= code && code <= 122); 
     if (!isNumeric && !isUpperAlpha && !isLowerAlpha) { 
      setTimeout(function() { alert("Invalid character!"); }, 0); 
     } 
    } 
</script> 

setTimeout功能是用來讓顯示警報消息之前顯示的字符。

+0

非常感謝。無效的消息顯示在文本框下方,但是如何將它顯示爲警報消息? – user123456789

+0

我更新了我的答案。請注意,我向驗證器添加了'ItemStyle-CssClass =「memComment」'到TemplateField,'Display =「Dynamic」'(如果您願意,您可以更改爲「Static」)。 – ConnorsFan

+0

您的更新答案仍然不會將該消息顯示爲警報。我沒有看到添加Display =「Dynamic」或「Display =」Static「的任何區別。 – user123456789

2

我打算建議你看看ASP.NET RegularExpressionValidators。它們允許您基於正則表達式驗證輸入。如果輸入不匹配,它會提醒用戶並且不允許提交。我相信當用戶離開現場時會發生火災。

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" 
    ControlToValidate="TextBox1" runat="server" 
    ErrorMessage="Only Numbers and letters are allowed" 
    ValidationExpression="^[a-zA-Z0-9]*$" /> 

如果你不熟悉正則表達式,它只會匹配包含小寫和大寫字母