2016-05-23 54 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]*$" /> 

如果你不熟悉正则表达式,它只会匹配包含小写和大写字母