web-dev-qa-db-ja.com

ポストバック後のページスクロールを防止する

CheckBoxListでのチェックに基づいてユーザーのスコアを合計する作業をしています。ユーザーがボックスをチェックするたびに、値Xが総合スコアに追加されます。ユーザーがチェックボックスをオフにすると、全体のスコアから値Xが差し引かれます。ここでは問題ありません。

私が抱えている問題は、CheckBoxListプロパティのAutoPostbackオプションを使用すると、ユーザーが置かれた場所にとどまらずに、ページが上部に強制的に読み込まれることです。つまり、各チェック/チェック解除後にスクロールし続ける必要があります。これを防ぐ方法はありますか?

13
Kruug

Ajaxソリューション

もちろん、最善の方法は、Ajax呼び出しを使用することです。ページはまったく移動されず、データが更新されるだけです。 updatepanelは、開始するための高速で簡単なソリューションです-最適なソリューションではありませんが、単純なページがある場合、それは非常に良いものです。

第二の解決策

2番目の解決策は、アンカー番号を使用することです。表示したいポイントを設定します。

<a name="PointA"></a>

そして、そのアンカーをpage.aspx#PointAとして使用してページを呼び出します。

3番目のソリューション

3番目のソリューションは、ASP.NETの内部JavaScriptコードを使用することです。ページ宣言(先頭の1行目)<%@ Page MaintainScrollPositionOnPostback="true" %>

または、web.configですべてのページに影響を与える場合は、<pages maintainScrollPositionOnPostBack="true" />

または、プログラムでSystem.Web.UI.Page.MaintainScrollPositionOnPostBack = true;を開いて、必要に応じて閉じます。

JQueryの使用

わずか2行のjQueryコードで、ポストバック後に移動したいポイントで素敵なアニメーションを作成できます。

var WhereToMove = jQuery("#PointA").position().top;
jQuery("html,body").animate({scrollTop: WhereToMove }, 1000);

そして、あなたはこの要素にページを移動します:

<a id="PointA" name="PointA"></a>

Google検索

そして最後に、カスタムJavaScriptコードを使用して同じことを行うことができます。これについてはインターネット上に多くのサンプルがあります: https://www.google.com/?q=asp.net+remain+position

39
Aristos

ポストバック後にページがスクロールしないようにする2つの最良の方法は次のとおりです。これをweb.configに配置します。
1)ページmaintainScrollPositionOnPostBack = "true"

多くの人々は、どこにこの行を置くのが正確な場所であるかと尋ねました。したがって、この行を配置するための正確な場所は

<system.web>
<pages maintainScrollPositionOnPostBack="true">
</system.web>

注:これはソリューション全体に適用され、各フォームのスクロールを防ぎます

2)これを実現する2番目の方法は、この行をaspxファイルの上部に配置します。

MaintainScrollPositionOnPostback = true

このような

<%@ Page MaintainScrollPositionOnPostback=true Language="C#" AutoEventWireup="true" CodeBehind="xx.aspx.cs" Inherits="xx.Global" %>

注:これは、防止したい特定のフォームに適用されます。

6
Malik

考えられる方法は3つあります。

  1. スクロールを無効にする必要があるページで、属性MaintainScrollPositionOnPostback in Page( "<%@ Page ....>")ディレクティブをtrueに設定します。つまり、<%@ Page MaintainScrollPositionOnPostback=true ...other settings... >がaspxページ

  2. Webサイトのすべてのページについて、web.configに次の行を追加します。<pages MaintainScrollPositionOnPostback=true>

  3. 組み込むAJAXクエリ

3
John

スクロールとページの更新を停止する場合MaintainScrollPositionOnPostback = "true"タグが最も重要です。

1
thisal selaka

次の行をWeb構成ファイルに追加します。

<pages maintainScrollPositionOnPostBack="true">
0
Firoz Khan

Runatタグのおかげで、HTMLタグは.NETでプログラムから参照できます。

HTMLでbodyタグにrunat = "server"とid = "body"またはコードで参照したいもの(例ではbodyを使用します)を指定するだけです。

次に、次のようなコードでタグの属性を追加/変更できます。

Body.Attributes.Add("scroll", "no")

コードをページ読み込みに配置します。

0
Devendra Patel