2016-08-26 3 views
0

私は次のようにPostBackを行うには、私のasp.netのボタンを防ぐためにしようとしている:
無効にポストバックボタンASPと実行サーバコード

<asp:button runat="server".... OnClientClick="Confirm(); return false;" /> 

これはボタンPostBackを防ぐですが、それはまた私のOnClickボタンイベントイマイチ実行しています。
どうすれば修正できますか?
私は何をしようとしていることは確認メッセージを表示することですが、「いいえ」ボタンをPostBack

の確認機能を行う上でのユーザーのクリックした場合:

function Confirm() { 
     var confirm_value = document.createElement("INPUT"); 
     confirm_value.type = "hidden"; 
     confirm_value.name = "confirm_value"; 
     if (confirm("Do you want to save data?")) { 
      confirm_value.value = "Yes"; 
     } else { 
      confirm_value.value = "No"; 
     } 
     document.forms[0].appendChild(confirm_value); 
    } 

マイボタンのコールバック(そのISN」をトンの呼び出し「falseを返す」ながらOnClientClickに追加:あなたがしたい場合にのみ、

public void OnButtonClicked(object sender, EventArgs e) 
{ 
string confirmValue = Request.Form["confirm_value"]; 
if (confirmValue == "Yes") 
{ 
    //my code 
} 

} 

答えて

1

OnClientClickイベントハンドラはfalseを返す必要がありますポストバックを防ぐ。それを行うための最も簡単な方法は、次のようになります。

<asp:Button runat="server" OnClientClick="if (!confirm('Do you want to save data?')) return false;" ... /> 

あなたが確認プロセスの間に、より多くの処理が必要な場合は、ブール値を返す必要があり、あなたのJavascript機能にそれを置くことができます。

<asp:Button runat="server" OnClientClick="if (!confirmSaving()) return false;" ... /> 

function confirmSaving() { 
    ... 
    if (some condition) { 
     ... 
     return true; 
    } else { 
     ... 
     return false; 
    } 
} 

注: OnClientClickの中に条件を入れるのではなく、単に関数の値を返すことができます。その解決策はいくつかのコントロールでは失敗します(__doPostBack only works if there is a LinkButton, Calendar or WizardStep control on the page参照)。一方、条件付きバージョンはすべてのコントロールで機能します。

+0

私のために働いた、レッスンありがとう! :) – CSharpBeginner

関連する問題