C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Panelの水平スクロール位置を保持したい


(過去ログ 103 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■61613 / inTopicNo.1)  Panelの水平スクロール位置を保持したい
  
□投稿者/ ASP初心者A (1回)-(2011/08/23(Tue) 11:25:06)

分類:[ASP.NET (VB)] 

お世話になります。

VS2010 ASP.NET(VB)を使用しております。


横長の画像をPanelの中にImageButtonを入れて
スクロール表示するようにしているのですが

Postbackするとスクロールバーが元の位置(左端)に戻ってしまいます。

過去ログより以下のように設定しましたが
Javaスクリプト側では値の取得が出来ているのですが
hidScroll.Valueの値の保存とスクロール位置の保持ができません。

よろしくお願いします。 

[Default.aspx]

<head id="Head1" runat="server">
    <title>Paneltest</title>
    <script type="text/javascript"> 
//<![CDATA[
        function lfncScroll() {
            document.getElementById('<%=hidScroll.ClientID %>').Value = document.getElementById('<%=Panel1.ClientID %>').scrollLeft;
        }
        function LoadScroll() {
            document.getElementById('<%=Panel1.ClientID %>').scrollLeft = document.getElementById('<%=hidScroll.ClientID %>').Value;
        }//]]>
</script> </head>
<body onload="LoadScroll()">
    <form id="form1" runat="server">
    <input id="hidScroll" type="hidden" name="hidScroll" runat="server" value="0" />
    <asp:Panel ID="Panel1" runat="server" Height="100px" Width="500px" 
                  ScrollBars="Auto" onscroll="lfncScroll();" >
       
<br />
            <asp:ImageButton ID="ImageButton1" runat="server"  
                ImageUrl="test.bmp"  Height="100px" Width="1000px"  />
               
    </asp:Panel>
    <asp:Button ID="Button1" runat="server" PostBackUrl="Default.aspx" Text="Button" />
    </form>
</body>

[Default.aspx.vb]

 If IsPostBack Then

   Dim script As New System.Text.StringBuilder
   script.Append("<script languege=""JavaScript"">")
   script.Append("document.getElementById('" + Me.Panel1.ClientID + "').scrollLeft =")
   script.Append("document.getElementById('" + Me.hidScroll.ClientID + "').Value;")
   script.Append("</script>")

   ClientScript.RegisterStartupScript(Me.Panel1.GetType(), "authenticated", script.ToString)
 End If



引用返信 編集キー/
■61634 / inTopicNo.2)  Re[1]: Panelの水平スクロール位置を保持したい
□投稿者/ ASP初心者A (2回)-(2011/08/24(Wed) 16:50:06)
自己解決しました。

実行後のソースを見直した所、Javascriptで hiddenなinputに書き込み出来ていませんでした。
なぜ書き込み出来ないのか分からなかったので、スクロール位置をcookieに保存する方法に変更しました。



[Default.aspx]

 <script type="text/javascript"> 
            function lfncScroll(p) {
                document.cookie = p.scrollLeft;
            }
            function LoadScroll() {
               
                document.getElementById('Panel1').scrollLeft = document.cookie;

            }
</script>

<body onload=" LoadScroll()">

<asp:Panel ID="Panel1" runat="server" Height="100px" Width="500px" 
                  ScrollBars="Auto" onscroll="lfncScroll(this);" >


解決済み
引用返信 編集キー/
■61653 / inTopicNo.3)  Re[2]: Panelの水平スクロール位置を保持したい
□投稿者/ todo (163回)-(2011/08/25(Thu) 12:29:39)
> 実行後のソースを見直した所、Javascriptで hiddenなinputに書き込み出来ていませんでした。

HiddenField サーバーコントロールを使うとよいでしょう。

> なぜ書き込み出来ないのか分からなかったので、スクロール位置をcookieに保存する方法に変更しました。

document.cookieの使い方が出鱈目すぎ。
また、ポストバックでcookieを使うのは不適切です。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -