テキストボックスに入力されたテキストがデータベースの特定のフィールドと一致するかどうかをチェックする CustomValidator があります。これは以前はすべてうまく機能していましたが、それ以来ページをかなり変更したため、機能しなくなりました。これに影響を与えるような変更を加えたとは思いませんでしたが、変更したようです。他のすべてのバリデーター (必須フィールド バリデーター) は正常に動作していますが、CustomValidator が応答しません。
とにかく、ここに私のコードがあります:
CustomValidator:
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="txtCoursePrefix" ErrorMessage="Course number is already taken."></asp:CustomValidator>
VB コードビハインド:
Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
'Checking for duplicate course numbers
'get values
Dim checkPrefix = txtCoursePrefix.Text
Dim checkNum = txtCourseNum.Text
'db connectivity
Dim myConn As New OleDbConnection
myConn.ConnectionString = AccessDataSource2.ConnectionString
myConn.Open()
'select records
Dim mySelect As New OleDbCommand("SELECT 1 FROM tableCourse WHERE prefix=? AND course_number=?", myConn)
mySelect.Parameters.AddWithValue("@checkPrefix", checkPrefix)
mySelect.Parameters.AddWithValue("@checkNum", checkNum)
'execute(Command)
Dim myValue = mySelect.ExecuteScalar()
'check if record exists
If myValue IsNot Nothing Then
CustomValidator1.SetFocusOnError = True
args.IsValid = False
End If
End Sub
CustomValidator1.SetFocusOnError = True および args.IsValid = False になるまで、すべてが機能しています。If ステートメントをテストしたところ、正しく動作しており、true が返され、その中に入れたものはすべて実行されます。