0

我有一个带有正则表达式验证器的文本框,用于验证我的文本框是否为数字。

这是代码:

<asp:TextBox ID="txtAmount" runat="server" CssClass="TextBoxCls"></asp:TextBox>
<asp:RegularExpressionValidator runat="server" ID="valNumbersOnly" ControlToValidate="txtAmount"
                            SetFocusOnError="true" Display="Dynamic" ErrorMessage="Please enter a numbers only in text box."
                            Font-Bold="true" ForeColor="Red" ValidationExpression="(^([0-9 ]*|\d*\d{1}?\d*)$)">
                        </asp:RegularExpressionValidator>

并且,如果用户不小心输入了错误的数据,它会显示如下错误:

错误

我给用户一个清除所有文本框的清除功能:使用这种功能:

 Public Sub ClearTextBox(ByVal root As Control)
        For Each ctrl As Control In root.Controls
            ClearTextBox(ctrl)
            If TypeOf ctrl Is TextBox Then
                CType(ctrl, TextBox).Text = String.Empty
            End If
        Next ctrl
    End Sub


    Protected Sub btnClr_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnClr.Click

        ClearTextBox(Me)
        dropResponse.SelectedIndex = 0
        FillData()

    End Sub

但是,金额没有清除,它仍然显示错误。为什么它仍然发生?

4

2 回答 2

1

如果您通过同一表单上的另一个按钮提供此信息,它将永远不会点击代码隐藏。

如果您想要一个经过验证的表单上的按钮无论其他控件是否已验证都需要触发,请将其放在单独的验证组中:

<asp:Button runat="server" ID="btnClr" Text="Clear form" OnClick="btnClr_Click" ValidationGroup="unvalidatedControls" />

或者,在需要验证的控件以及提交表单的按钮上放置一个验证组:

<asp:TextBox ID="txtAmount" runat="server" CssClass="TextBoxCls" ValidationGroup="validatedControls"></asp:TextBox>
<asp:RegularExpressionValidator runat="server" ID="valNumbersOnly" ControlToValidate="txtAmount"
                            SetFocusOnError="true" Display="Dynamic" ErrorMessage="Please enter a numbers only in text box."
                            Font-Bold="true" ForeColor="Red" ValidationExpression="(^([0-9 ]*|\d*\d{1}?\d*)$)"
                            ValidationGroup="validatedControls">
                        </asp:RegularExpressionValidator>

<asp:Button runat="server" ID="btnSubmit" Text="Submit Form" ValidationGroup="validatedControls" />

您可以在清除按钮和主窗体上都放置一个ValidationGroup属性,只要它们不同,清除按钮就可以正常工作。

关于验证组的一些文档:http: //msdn.microsoft.com/en-us/library/ms227424.aspx

于 2013-05-24T09:21:02.213 回答
0

我怀疑文本框包含在面板或另一个容器控件中。只有页面的顶级控件在页面的控件集合中可用。

我建议使用正确的容器控件更改对 ClearTextBox 的调用参数。

于 2013-05-24T09:20:43.003 回答