- - PR -
CustomValidatorを使用してもサーバのボタン押下処理が実行されてしまう
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-04-09 10:22
現在、asp.net/VBの言語で開発をしています。
画面のテキストボックスに入力されたコードがデータベースに登録されているかを確認し、登録されていればエラー、登録されていなければ、追加ボタンの押下処理を実行するという仕様 追加ボタン押下時にこの判定処理を行うよう画面の設定をしています。 ※以下ソース、画面の上部にValidationSummaryでエラーを表示する部分があります。 <table cellpadding="0" style="margin-top:0px"> <tr> <td class="tableOuter_border"> <asp:ValidationSummary ID="validationSummary1" runat="server" Height="100px" stle="margin-left:0px" Width="792px" ShowMessageBox="false" ValidationGroup="empCd_req"/> </td> </tr> </table> そして、コードを入れるテキストボックスがあります。↓ <asp:TextBox ID="txtEmpCd" runat="server" CssClass="default" Text="" Width="60px" MaxLength="8" style="ime-mode: disabled"></asp:TextBox> このテキストボックスのエラーチェック処理が以下になります。 <!-- 入力チェック Start --> <asp:RequiredFieldValidator ID="rfvEmpCd" runat="server" ControlToValidate="txtEmpCd" ErrorMessage="コードを入力してください" Display="Dynamic" Text="*" ValidationGroup="empCd_req"> </asp:RequiredFieldValidator> <asp:CustomValidator ID="cvalEmpCd" runat="server" Display="Dynamic" ErrorMessage="" Text="*" OnServerValidate="cvalEmpCd_ServerValidate" ControlToValidate="txtEmpCd" ValidationGroup="empCd_req" > </asp:CustomValidator> <!-- 入力チェック End --> このCustomValidatorのサーバーの処理で、データベースのレコード存在チェックをしています。 以下、サーバの処理です Protected Sub cvalEmpCd_ServerValidate(ByVal source As Object, _ ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) _ Handles cvalEmpCd.ServerValidate ' 変数の宣言 Dim iRet As Integer Dim empCoad As String '社員コード Dim param As String() 'エラーメッセージに使用するパラメータ Dim strErrMsg As String 'エラーメッセージを入れる箱 Dim retDt As DataTable Dim pdtOut As New DataTable empCoad = Me.txtEmpCd.Text Try ' 社員情報テーブルに登録する社員コードが存在するか確認する処理 iRet = checkMethod(empCoad, pdtOut) If iRet = 0 Then strErrMsg = "該当するデータがありません。" args.IsValid = False End If Catch ex As Exception Me.ShowException(ex) End Try End Sub そして、以下は追加ボタンのサーバーの処理です。 Private Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.Click ここの処理に、上記cvalEmpCd_ServerValidate関数の処理でargs.IsValid=False としても、入ってきます。 私がしたいのは、 上の関数でargs.IsValidにしたら、この追加処理には入らないようにしたいのです。 誰かわかりましたらご説明していただけないでしょうか。 よろしくお願いします | ||||
|
投稿日時: 2009-04-09 13:31
Validatorの使い方としては、Clickイベントハンドラ内でIsValid値を判定するというのが本来のやり方ではないでしょうか。
http://www.atmarkit.co.jp/fdotnet/dotnettips/244aspcustvali/aspcustvali.html >Sub objBtn_Click(sender As Object, e As EventArgs) > If Page.IsValid Then > ' 検証に成功した場合の処理を記述 > End If >End Sub
btnAdd_Clickは、あくまで「ボタン押下時の処理」であって、「追加処理」とは別と考えればよいのではないでしょうか。 「ボタン押下時」に、「入力内容に問題があった場合には追加処理を行わず、次の画面へ遷移しない」、ということかと。 | ||||
|
投稿日時: 2009-04-09 17:13
ありがとうございます。
アドバイスを参考にして、処理を追加しましたら、うまくいきました。 | ||||
|
投稿日時: 2009-04-09 22:17
まずはドキュメントに尋ねましょう。
|
1