1

ユーザーのデータを「編集」できるこのページがあります...「正常に編集されました」などのメッセージを送信し、新しいコンテンツ (DropDownLists AND TextBoxes) でページも更新したいと考えています。

私はメッセージにこれを使用しています:

ScriptManager.RegisterStartupScript(this, typeof(Page), "alert", "alert('Edited Successfully !');", true);

そして、ページを更新するために、私は試しました: Response.Redirect(Request.RawURl)そして、単純なものでさえもうまくいきませんでしたResponse.Redirect(~/page.aspx)...

この方法を試してみると、ページは更新されますが、アラートは表示されません... ;\ このすべてのデータ (DropDownLists、Textboxes などを埋める) は Page_Load で呼び出されます。メッセージの送信後に同じメソッドを呼び出そうとしましたが、更新されません =\

何か案が?

4

1 に答える 1

1

あなたが直面している問題は、ページをリロードしているために発生するため、登録したスクリプトが失われます。

このような場合に私が使用したアプローチには、jQueryjQuery UIダイアログの使用が含まれます。

ページに、メッセージ コンテナーとなる div を配置します。最初は非表示で、データベース リクエストの完了後に表示されます。

<div id="modal" title="Alert" style="display: none;">
</div>

ダイアログを表示する JavaScript 関数を記述します。

function showConfirmation(text){
    $("#modal").html(text).dialog({
          modal: true, // show the dialog as modal
          buttons: {
                Ok: function() {
                  location.reload();
               }
           }, // add a button that refreshes the page when clicked
           closeOnEscape: false, // avoid the dialog close when ESC is pressed
           dialogClass: 'no-close' // adds a CSS class that hides the default close button
    });
}

このdialog関数は、jQuery UI ライブラリを使用してダイアログを表示する役割を果たします。このbuttonsパラメーターは、押されたときにページを更新するボタンを表示します。

ダイアログ スクリプトを次のRegisterStartupScriptメソッドで登録するだけです。

ScriptManager.RegisterStartupScript(this, typeof(Page), "alert", "showConfirmation('Edited Successfully !');", true);

jQuery や jQuery UI を使用していない場合は、head タグに参照を追加するだけです。CDNを使用したくない場合は、ファイルをローカル サイトにダウンロードしてください。

  <script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>  
  <script type="text/javascript" src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
  <link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css">

このフィドルのクライアント側の動作の実例を見ることができます

于 2013-03-08T21:08:41.253 に答える