1

我对与 TextBox 连接的 RegularExpressionValidator 有疑问:

<asp:TextBox ID="tbPRCOD" runat="server" Font-Bold="True" ForeColor="Green" BackColor="White" BorderStyle="None" Width="50%"></asp:TextBox>

<asp:RegularExpressionValidator id="revPRCOD" runat="server" SetFocusOnError="True"
                                 ErrorMessage="<%$ Resources:GlobalTranslations, max20char %>" Display="Dynamic"
                                 ControlToValidate="tbPRCOD" BackColor="Transparent" Font-Bold="True"
                                 Font-Underline="True" ForeColor="Red" ValidationExpression="^[a-zA-Z0-9]{0,20}$">

在页面上我有下拉列表:

<asp:DropDownList ID="cmbIDFAM" runat="server" Width="98%" SkinID="mandatoryCombo" Font-Size="X-Small" AutoPostBack="true" > </asp:DropDownList></td>

启动时启用验证器(如果文本框中的字符串超过 20 个字符,则验证器显示验证错误)。如果我将 DropDownList 中的选定项目更改为值为 5 的项目,那么我想关闭验证,因为对于 DropDownList 中的这个索引,我想在 TextBox (tbPRCOD) 中写入超过 20 个字符:

        Protected Sub cmbIDFAM_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbIDFAM.SelectedIndexChanged
        If getValueFromCombo(cmbIDFAM) = 5 Then
            tbPRCOD.MaxLength = 100
            revPRCOD.Enabled = False

        Else
            tbPRCOD.MaxLength = 20
            revPRCOD.Enabled = True
        End If

    End Sub

一切正常,直到我将 cmbIDFAM DropDownList 更改为第 5 项。我在 TextBox 中输入了 20 多个字符,现在 RegularExpressionValidator 已禁用,因此在验证时不会显示错误。当我在 ddl 中更改项目时,TextBox 中的字符数超过 20 个并且启用了验证器,但页面中不显示错误。为什么?如何强制验证?在 ddl 中更改项目后,我还使用函数强制验证:

revPRCOD.Validate()

在这种情况下这无济于事。感谢帮助。垫。

4

0 回答 0