GridView
ページでandを使用しListBox
ています。Gridview には、データベース バインドからのデータが含まれていますDataSource
。リスト ボックス内の項目をクリックするとGridView
、サブ項目が表示されます。
にスクロールバーがあると問題が発生しGridView
ます。グリッド ビューから最後のアイテムを選択すると、サブ アイテムが表示され、スクロールバーが上がります。どの項目が選択されているかわかりません。
非同期ポストバック後にスクロール位置をリセットするという質問への回答を読むことをお勧めします-ASP.NET
ポストバックの前に、行 ID を生成するか、スクロール位置を記録する必要があります。ジャバスクリプト機能を使う
yourGridId.scrollTo(x,y)
ポストバックの前に保存した以前の x および y 位置を渡します。
サーバー側でアクセスできるように、非表示フィールドに値を保存します。
解決:
非表示フィールドを次のように配置します
<input type="hidden" id="hdnScrollTop" runat="server" value="0" />
そしてdiv
関数の追加で
<div id="dvScroll" onscroll="$get('ctl00_ContentPlaceHolder1_hdnScrollTop').value = this.scrollTop;">
JavaScript:
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(pageLoaded);
prm.add_beginRequest(beginRequest);
var postbackElement;
function beginRequest(sender, args) {
postbackElement = args.get_postBackElement();
}
function pageLoaded(sender, args) {
var updatedPanels = args.get_panelsUpdated();
if (typeof (postbackElement) == "undefined") {
return;
}
if (postbackElement.id.indexOf('gridViewList') > -1) {
try {
$get("divScroll").scrollTop = $get("ctl00_ContentPlaceHolder1__hdnScrollTop").value;
}
catch (Err) {
}
}}
これで私の問題は解決しました。