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()
これは、この状況では役に立ちません。手伝ってくれてありがとう。マット。