2016-05-23 7 views
3

I持って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イベントを呼び出すことができます警告メッセージと即時検証のためのTextBox:

<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スタイルクラスは、セル内のTextBoxとバリの間の改行を防ぐ:

クライアントコードで
.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

答えを更新しました。 TemplateFieldに 'ItemStyle-CssClass =" memComment "'を追加し、バリデーターに '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]*$" /> 

あなたが正規表現に精通していない場合には、それが唯一の小文字と大文字を含む文字列にマッチします、と数字

関連する問題