2017-07-21 3 views
0

現在、UserControlsと連携しています。バリデーショングループが合格したかどうかをチェックする方法は?

は、このボタンを持っている:

<dx:ASPxButton ID="btnSave" runat="server" Text="Save" CssClass="btn btn-active" ValidationGroup="MyValidationGroup" OnClick="BtnSaveClick"> 

私は私のチームメイトからこのコードを継承しています。

最近、ボタンを何度もクリックすると、レコードが重複することが判明しました。

私は背後にあるコードに

btnSave.ClientEnabled = false; 

btnSave.Enabled = false; 

を追加しようとしましたが、それは、レコードを複製から防ぐことないです。

検証グループが(正常に)jqueryまたはjavascriptに渡されたかどうかを確認するには、フロントエンドのボタンを無効にする方法ですか?

+0

重複したくない場合は、データベースレベルで確認してください。ボタンを無効にすると、ダブルクリックするのに役立ちます。しかし、ユーザーが 'F5'を押すか、ページを新しいものとして再ロードして、もう一度ボタンを押すと、同じ結果が得られます。 – VDWWD

+0

はい。このことはそのようにすべきです。私はそれを受け入れることができるように答えとしてあなたのコメントを追加してください。 –

答えて

1

だけでなく、単に

<asp:Button ID="btnSave" runat="server" class="btn btn-active" OnClick="btnSave_Click" ValidationGroup="validation" Text="Save" OnClientClick="if (!Page_ClientValidate()){ return false; } this.disabled = true; this.value = 'Saving...';" 
             UseSubmitBehavior="false" /> 

このコードを使用する列に制約を置くことができますスニペットはボタンを無効にし、クリックイベントがそのcを実行するまで何度もクリックするのを許可しませんode これが役に立ちます。

1

あなたはこの$(文書)を行うことができます.ready(関数(){

$('#ctl00_MainContent_btnSave') 
    .attr("onclick", null) 
    .removeAttr("onclick") 
    .click(function() {   
    // To validate you form using Validation group. 
    if (typeof (Page_ClientValidate) == 'function') { 
       Page_ClientValidate("ValidationGroup"); 
       if (Page_IsValid == true) { 
        alert('the form is valid'); 
       } 
      } else { 
       if ($(this).valid()) { 
        alert('the form is valid'); 
       } 
      }    

     //Disable button before page posting back 
     WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions($(this).attr("name"), "", true, "", "", false, false)); 
    }); 

});

+0

はい、フォームが無効な場合はどうなりますか? –

+0

実際にフォームが有効であるかどうかをチェックするために、コードの中にメソッドを見つけました。フォームが有効であるかどうかを確認するためにajax呼び出しなどを行うことは可能ですか? –

+0

はい、Page.ClientScript.RegisterStartupScript(this.GetType()、 "CallMyFunction"、 "MyFunction()"、true)を使用してjavascript関数を呼び出すことができます。無効にするボタン。 – Ravikumar

1

重複したくない場合は、データベースレベルで確認してください。ボタンを無効にすると、ダブルクリックするのに役立ちます。しかし、ユーザーがF5を押すか、ページを新しいものとして再ロードして、もう一度ボタンを押すと、同じ結果が得られます。

は、MS SQLのためには、このような何か行うことができます:

IF NOT EXISTS (SELECT column FROM table WHERE (column = @myVar)) 
    INSERT INTO table (column) VALUES (@myVar) 

をそれともも

ALTER TABLE table ADD CONSTRAINT UQ_column UNIQUE (column) 
0

私はそれを理解しました。 @Shayan Hafeezが提供するコードを使用すると、コンパイラは例外をスローしました。

The server tag is not well formed. 

よりも、私はボタンからOnClientClickを取り出して、コードビハインドにこのコードを挿入します。

btnSave.ClientSideEvents.Click = "if (!Page_ClientValidate()){ return false; } this.disabled = true; this.value = 'Saving...';"; 

それは今、正常に動作します。

+0

コードはあなたに与えられているので、私は正しく分かりませんでした。なぜなら、あなたが何かを逃してしまったと思いますが、あなたがsolutoinを見つけたことを知ってうれしく思います: –

+0

あなたの答えは私を助けました。それ :) –

関連する問題