CheckBoxListでのチェックに基づいてユーザーのスコアを合計する作業をしています。ユーザーがボックスをチェックするたびに、値X
が総合スコアに追加されます。ユーザーがチェックボックスをオフにすると、全体のスコアから値X
が差し引かれます。ここでは問題ありません。
私が抱えている問題は、CheckBoxListプロパティのAutoPostbackオプションを使用すると、ユーザーが置かれた場所にとどまらずに、ページが上部に強制的に読み込まれることです。つまり、各チェック/チェック解除後にスクロールし続ける必要があります。これを防ぐ方法はありますか?
もちろん、最善の方法は、Ajax呼び出しを使用することです。ページはまったく移動されず、データが更新されるだけです。 updatepanelは、開始するための高速で簡単なソリューションです-最適なソリューションではありませんが、単純なページがある場合、それは非常に良いものです。
2番目の解決策は、アンカー番号を使用することです。表示したいポイントを設定します。
<a name="PointA"></a>
そして、そのアンカーをpage.aspx#PointA
として使用してページを呼び出します。
3番目のソリューションは、ASP.NETの内部JavaScriptコードを使用することです。ページ宣言(先頭の1行目)<%@ Page MaintainScrollPositionOnPostback="true" %>
。
または、web.configですべてのページに影響を与える場合は、<pages maintainScrollPositionOnPostBack="true" />
。
または、プログラムでSystem.Web.UI.Page.MaintainScrollPositionOnPostBack = true;
を開いて、必要に応じて閉じます。
わずか2行のjQueryコードで、ポストバック後に移動したいポイントで素敵なアニメーションを作成できます。
var WhereToMove = jQuery("#PointA").position().top;
jQuery("html,body").animate({scrollTop: WhereToMove }, 1000);
そして、あなたはこの要素にページを移動します:
<a id="PointA" name="PointA"></a>
そして最後に、カスタムJavaScriptコードを使用して同じことを行うことができます。これについてはインターネット上に多くのサンプルがあります: https://www.google.com/?q=asp.net+remain+position
ポストバック後にページがスクロールしないようにする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" %>
注:これは、防止したい特定のフォームに適用されます。
考えられる方法は3つあります。
スクロールを無効にする必要があるページで、属性MaintainScrollPositionOnPostback
in Page( "<%@ Page ....>")ディレクティブをtrueに設定します。つまり、<%@ Page MaintainScrollPositionOnPostback=true ...other settings... >
がaspxページ
Webサイトのすべてのページについて、web.configに次の行を追加します。<pages MaintainScrollPositionOnPostback=true>
組み込むAJAXクエリ
スクロールとページの更新を停止する場合MaintainScrollPositionOnPostback = "true"タグが最も重要です。
次の行をWeb構成ファイルに追加します。
<pages maintainScrollPositionOnPostBack="true">
Runatタグのおかげで、HTMLタグは.NETでプログラムから参照できます。
HTMLでbodyタグにrunat = "server"とid = "body"またはコードで参照したいもの(例ではbody
を使用します)を指定するだけです。
次に、次のようなコードでタグの属性を追加/変更できます。
Body.Attributes.Add("scroll", "no")
コードをページ読み込みに配置します。