2016-05-17 15 views
-1

ASP.NET GridViewから呼び出される参照ウィンドウがあります。ボタンをクリックすると、DIVタグが表示され、アカウント番号を参照できます。問題は、GridViewに多くの行がある場合、デフォルトでDIVがページの上部近くに表示されるため、ユーザーは表示するためにスクロールする必要があるということです。起動時にスクロール位置に基づいてDIVタグを配置する

JavaScriptを書いて現在のスクロール位置を決定し、それに応じてウィンドウを配置しますが、スクロール位置を誤って表示するとゼロが表示されます。スクロール位置がまだページの開始時に決定されていないかどうかはわかりません。私はクリック時にスクロール位置に基づいてdivを移動しようとするページにリンクを配置しました。 JavaScriptは、アンカータグのonClickイベントの一部としてロードされるので、この時点でページは完全にロードされます。このリンクをクリックすると、適切なスクロール位置が決定され、ウィンドウが適切に再配置されます。

起動時に適切なスクロール位置を取得する別の方法はありますか?ここで

は...ここ

 Dim strStartupScript As New System.Text.StringBuilder() 
    strStartupScript.Append("<script type=""text/javascript"">") 
    strStartupScript.Append("var scrOfY = 0; ") 
    strStartupScript.Append("scrOfY = getScrollXY(); ") 
    'strStartupScript.Append("alert(scrOfY); ") 
    strStartupScript.Append("var div = document.getElementById('divLookupAccount'); ") 
    strStartupScript.Append("var newTop = 400; ") 
    strStartupScript.Append("newTop = newTop + (scrOfY/2); ") 
    strStartupScript.Append("var num = newTop; ") 
    strStartupScript.Append("var n = num.toString(); ") 
    strStartupScript.Append("var s = n + 'px'; ") 
    strStartupScript.Append("div.style.top = s; ") 
    strStartupScript.Append("</script>") 
    Me.Page.ClientScript.RegisterStartupScript(Me.GetType(), "AccountLookupShow", strStartupScript.ToString) 

は、スクリプトで参照「getScrollXY()」関数のコードです...私は起動スクリプトを登録するために使用していますVB.NETのコードである

 function getScrollXY() { 
     var scrOfX = 0, scrOfY = 0; 
     if (typeof (window.pageYOffset) == 'number') { 
      //Netscape compliant 
      scrOfY = window.pageYOffset; 
      scrOfX = window.pageXOffset; 
     } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) { 
      //DOM compliant 
      scrOfY = document.body.scrollTop; 
      scrOfX = document.body.scrollLeft; 
     } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) { 
      //IE6 standards compliant mode 
      scrOfY = document.documentElement.scrollTop; 
      scrOfX = document.documentElement.scrollLeft; 
     } 

     return (scrOfY); 
    } 

これで私を助けることができる場合は、事前におねがいします。

答えて

0

固定ディビジョンの使用はどうですか?

この

<div class="fixedDialog" style=" 
    margin: auto; 
    background: gray; 
    padding: 10%; 
    font-size: 50px; 
    text-align: center; 
    position: fixed; 
    margin: 50px 30%; 
    z-index: 9999; 
">Fixed Dialog</div> 

は、ページフローの外でダイアログを配置します。 enter image description here

+0

ワウ!はい、それはずっと簡単で、魅力的に働きました。 JavaScriptもすべて削除できました。私はこれを前に見たことがないとは信じられません。ありがとう! –

関連する問題