c#
  • asp.net
  • validation
  • gridview
  • 2016-04-14 64 views 0 likes 
    0

    我在GridView頁腳模板中有一個文本框。要求是文本框必須是數字,大於0並且限制爲2位小數。這個文本框中有以下三個驗證器。GridView頁腳中的文本框的多個驗證者

    <asp:TemplateField HeaderText="Amount"> 
        <ItemTemplate> 
         <asp:Label ID="Label_Amount" runat="server" Text='<%# Bind("Amount") %>'></asp:Label> 
        </ItemTemplate> 
        <FooterTemplate> 
         <asp:TextBox ID="txtAmount" runat="server"></asp:TextBox> 
         <asp:RequiredFieldValidator ID="rfvAmount" runat="server" ErrorMessage="Amount is a required field" 
          ControlToValidate="txtAmount" Text="*" ForeColor="Red" ValidationGroup="Insert"> 
         </asp:RequiredFieldValidator> 
         <asp:CompareValidator ID="cvAmount" runat="server" ErrorMessage="Amount must be &gt; 0" 
          ControlToValidate="txtAmount" ValueToCompare="0" ValidationGroup="Insert" Text="*" 
          Type="Double" Operator="GreaterThan"> 
         </asp:CompareValidator> 
         <asp:RegularExpressionValidator ID="revAmount" ControlToValidate="txtAmount" ValidationGroup="Insert" Text="*" 
          runat="server" ErrorMessage="Amount limits to two decimal places" ValidationExpression="^\d+(\.\d{1,2})?$"> 
         </asp:RegularExpressionValidator> 
        </FooterTemplate> 
    </asp:TemplateField> 
    

    的問題是,如果我把12,3,我只希望看到的錯誤消息「金額必須>​​ 0」。不過,我得到了兩條錯誤消息。第三個常規驗證器也被解僱。我不知道爲什麼?我想知道我該如何解決這個問題?我可以寫一個正式快遞將我的三個要求結合在一起嗎?我也嘗試使用CustomeValidator,但不知何故JavaScript函數永遠不會被調用。有什麼建議麼?

    +0

    您是否爲html5(.Net 4.5+)編程? – fnostro

    +0

    我問了上面的問題,因爲如果你是那麼你可以用'」min =「。01」required />' – fnostro

    回答

    0

    您只需要在頁面的某個地方添加一個ValidationSummary控件。對於12,3

    Please see an example here

    +0

    消除所有的asp.net驗證也許我在我的文章中我不太清楚,但我確實在GridView後面有ValidationSummary。 – GLP

    1

    revAmount驗證失敗或abc因爲這些字符串不匹配正則表達式。如果您希望驗證程序只在數字沒有1或2個小數位時觸發,則必須考慮非數字字符串爲「有效」(如您在問題中指出的,將檢測結果保留爲cvAmount) 。

    以下正則表達式可用於revAmount。除了與原始表達式匹配的情況外,它還會匹配非數字字符串:

    ValidationExpression="^(((?!^\d+\.?\d*$).)*|\d+(\.\d{1,2})?)$" 
    

    N.B.我保留了您的原始驗證,對於像123.(以小數點結尾)等數字而言失敗。您可以考慮修改錯誤消息來解決這種情況。

    相關問題