16

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

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

4

8 に答える 8

43

Ajax ソリューション

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

2 番目の解決策

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

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

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

3番目の解決策

3 つ目の解決策は、ASP.NET の内部 JavaScript コードを使用することです。ページの宣言 (上部の最初の行)<%@ 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

于 2012-04-13T03:58:01.883 に答える
8

ポストバック後のページのスクロールを防止する 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" %>

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

于 2016-11-09T00:21:58.087 に答える
4

私が考えることができる3つの可能な方法があります:

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

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

  3. AJAX クエリを組み込む

于 2013-09-29T05:28:55.750 に答える
0

HTML タグは、runat タグのおかげで、.NET でプログラムによって参照できます。

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

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

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

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

于 2014-10-27T13:55:40.880 に答える
0

Put this line in the webconfig file:

<pages maintainScrollPositionOnPostBack="true">
于 2015-06-22T07:08:28.520 に答える