0

グリッドビューの最初の列にチェックボックスがある更新パネル内にグリッドビューがあります。最初に作成したときは、うまくいきました。チェックボックスは AutoPostBack に設定されており、ページの残りの部分に影響を与えることなく、データを処理してグリッドビューを更新できる非同期ポストバックが発生します。

ただし、クライアント側のページで特定の条件をテストし、ユーザーに「この人はこのために設定されていません」という確認ボックスを表示する必要があります。本当に続行しますか?'

最初に、グリッドビューの RowDataBound イベントに次のようなコードを少し入れて、これを行いました。

CheckBox cb = (CheckBox)e.Row.FindControl("myCheckBox");
cb.Attributes.Add("onclick", "return check('" + ContactName + "');");

そして、次の行に沿ってJavaScript関数がありました:

function check(ContactName)
{
  if (document.getElementById('Listed') == false)
  {
  if (confirm('This person is not listed, are you sure you want to continue?'))
    {
    return true;
    }
    return false;
  }
}

上記のコードのタイプミスは無視してください。記憶から入力しただけです。問題は、それが機能することです。ローカル変数 Listed が false の場合、確認ボックスが表示されます。

問題は、確認ボックスで「OK」を選択すると、チェックボックスによって生成されたポストバック (ChildrenAsTriggers = true の更新パネル内にあるため、非同期である必要があります) がキャンセルされることです。JavaScript が Postback を発生させることを確認した後、__doPostback を呼び出す必要があります。しかし、その後、必要な非同期ポストバックではなく、完全なポストバックを取得しています。

だから、私の質問は、javascript 確認でチェックボックスからの非同期ポストバックをどのように防ぎ、javascript 確認で [OK] を選択すると、非同期ポストバックが行われるかということです。

私が言うように、現時点では、ユーザーが [OK] をクリックした後に完全なポストバックを実行するしか機能しません。

4

2 に答える 2

1

Garrison Neely が提供した方法がうまくいくはずです。

ポストバックと非同期ポストバックの違いは、送信前にフォームの一部の値を変更し、その後元に戻すだけの非同期です。値は、どのコントロールがどのような情報でリクエストを開始するかを示しています。また、応答 html をレンダリングする必要がある iframe に使用されるターゲット情報も示しています。ここで私の考えをいくつか紹介します。実装は状況によって異なります。

于 2013-08-03T00:49:54.317 に答える