0

複雑な数式サーバー側を計算した後、クライアント側の確認を表示する必要があります。何かのようなもの

//Server side
        On ButtonClick(){
            FetchRate(field1,field2,.... fieldn);
            // Show Client side confirmation
            // Execute server side code if confirmed client side 
    }

私が行ったことはクライアント側の関数を作成したことですが、クライアント側を選択しても、サーバー側のコードは常にポストバックで実行されます

// Server side    
ScriptManager.RegisterStartupScript(this,this.GetType(), Guid.NewGuid().ToString(), "ConfirmAction('"+ myRate +"');", true);
//Client side
    function ConfirmAction(myRate) {
            if (confirm('Are you sure?. Rate is exceeding '+ myRate +', proceed ?')) {
                document.getElementById('hfSaveUpdate').value = 1;
                return true;
            }
            else
                return false;
        }
4

3 に答える 3

2

サーバー側のコードの間にクライアント側のアクションを配置することはできません。

コードはクライアント側の確認を準備しますが、応答が完了するまでブラウザに送信しません。その後、サーバーはすぐにデータの処理を続行します。完了すると、応答がブラウザに送信され、ユーザーに確認ダイアログが表示されます。遅すぎます:データはすでに処理されています。また、ダイアログの結果がサーバーに送信されることはありません。

プロセスを2つに分割する必要があります。最初にそのレートについての確認を取得し(おそらくajaxを使用)、次に処理/保存するフォームを送信します。

于 2013-01-31T13:22:40.247 に答える
2

Ajax Model Popupを使用して、[OK]と[キャンセル]ボタンを処理できます。

<ajaxToolkit:ModalPopupExtender ID="ModelPopupID" runat="server"  
    TargetControlID="LinkButton1"  
    PopupControlID="Panel1"  
    BackgroundCssClass="modalBackground"   
    DropShadow="true"   
    OkControlID="OkButton"   
    OnOkScript="onOk()"  
    CancelControlID="CancelButton"   
    PopupDragHandleControlID="Panel3" />  

サーバーコードからモーダルポップアップウィンドウを起動する:

サーバーサイドコード:

ClientScript.RegisterStartupScript(this.GetType(), "key", "launchModal();", true);

クライアント側コード:

<script type="text/javascript">
 var launch = false;
 function launchModal() 
 {
 launch = true;
 }
function pageLoad() 
 {
 if (launch) 
 {
 $find("ModelPopupID").show();
 }
 }
</script>

モデルポップアップの[OK]をクリックして、コンフォメーションコードの後に​​サーバー側で実行します。キャンセルボタンをクリックしたら、モデルのポップアップウィンドウを非表示にします。

詳細については、以下を確認してください。

ModalPopupチュートリアル

于 2013-01-31T13:27:35.837 に答える
0

onclientclick attributeボタンで設定できます

リンク: http: //msdn.microsoft.com/fr-fr/library/system.web.ui.webcontrols.button.onclientclick (v = vs.80).aspx

于 2013-01-31T13:17:21.630 に答える