zoukankan      html  css  js  c++  java
  • 维护Panel的滚动条ScrollBars位置(C#)

    我们常将内容放在Panel中,例如文章,GridView控件等....。当内容超出Panel的高、宽时,可能就需要滚动条来进行控制。 当点击页面中按钮产生PostBack时,滚动条总是会回到最上面的位置,我们现在要解决的主要就是这个问题。

    ScrollBar的可选项有:
      成员名称
     说明
     
      Auto
     根据需要,可显示水平滚动条、垂直滚动条或这两种滚动条。要不然也可以不显示任何滚动条。
     
     Both
     同时显示水平滚动条和垂直滚动条。
     
     Horizontal
     只显示水平滚动条。
     
     None
     不显示滚动条。
     
     Vertical
     只显示垂直滚动条。
     

    演示如何控制ScrollBars的Demo,基本思路是通过两个HiddenField在Submit时纪录下Panel的scrollLeft,scrollTop的值,当IsPostBack时,当两个HiddenField的value重新设置给Panel的scrollLeft,scrllTop.

    Html代码
     在页面中放两个Panel,一个做为容器,一个做为内容(只为演示作用)。

    ...@ Page Language="C#" AutoEventWireup="true" CodeFile="ControlPanelScrollBarSample.aspx.cs" Inherits="ControlPanelScrollBarSample" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>演示如何控制Panel的滚动块</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div style="text-align:center;">
        <asp:Panel ID="P_Container" runat="server" ScrollBars="Auto" Width="80%" Height="400px">
        <asp:Panel ID="P_Content" runat="server" Width="90%">
        </asp:Panel>
        </asp:Panel>
            <br />
            <asp:Button ID="BT_Submit" runat="server" Text="点击确发PostBack,查看滚动块的位置" />
        </div>
        </form>
    </body>
    </html>
    
    
    
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/llxchen/archive/2008/01/31/2074979.aspx
    
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    
    public partial class ControlPanelScrollBarSample : System.Web.UI.Page
    ...{
        protected void Page_Load(object sender, EventArgs e)
        ...{
                FillContentPanel();
                HandlePanelScrolBar();
        }
    
        private void HandlePanelScrolBar()
        ...{
            //定义两个HiddenField,分别纪录Panel的ScrollBar的X与Y位置
            HiddenField HF_ScrollPosX = new HiddenField();
            HiddenField HF_ScrollPosY = new HiddenField();
    
            HF_ScrollPosX.ID = "ScrollPosX";
            HF_ScrollPosY.ID = "ScrollPosY";
            form1.Controls.Add(HF_ScrollPosX);
            form1.Controls.Add(HF_ScrollPosY);
    
            //生成JS:将Panel的ScrollBar的X,Y位置设置给两个HiddenField
            string script;
            script = "window.document.getElementById('" + HF_ScrollPosX.ClientID + "').value = "
                      + "window.document.getElementById('" + P_Container.ClientID + "').scrollLeft;"
                      + "window.document.getElementById('" + HF_ScrollPosY.ClientID + "').value = "
                      + "window.document.getElementById('" + P_Container.ClientID + "').scrollTop;";
    
            this.ClientScript.RegisterOnSubmitStatement(this.GetType(), "SavePanelScroll", script);
    
            if (IsPostBack) //如果是PostBack,将保存在HiddenField的ScrollBar的X,Y值重设回给Panel的ScrollBar
            ...{
                script = "window.document.getElementById('" + P_Container.ClientID + "').scrollLeft = "
                        + "window.document.getElementById('" + HF_ScrollPosX.ClientID + "').value;"
                        + "window.document.getElementById('" + P_Container.ClientID + "').scrollTop = "
                        + "window.document.getElementById('" + HF_ScrollPosY.ClientID + "').value;";
    
                this.ClientScript.RegisterStartupScript(this.GetType(), "SetPanelScroll", script, true);
            }
        }
       
        /**//// <summary>
        /// 填充内容数据,视情况可使外Panel产生滚动条即可
        /// </summary>
        private void FillContentPanel()
        ...{
            Literal l = new Literal();
            string context = "";
    
            for (int i = 0; i < 100; i++)
            ...{
                context += "<BR>" + i + "行  中华人民共和国中华人民共和国!!!";    
            }
    
            l.Text = context;
            P_Content.Controls.Add(l);
        }
    }
    
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/llxchen/archive/2008/01/31/2074979.aspx
    


    我第一次做的时候,因为页面加了UpdatePanel控件,演示没有效果,后来我没有加UpdatePanel这个控才会成功,这个问题,我在网上苦苦找了几个小时,最后这个才是最佳答案。

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/llxchen/archive/2008/01/31/2074979.aspx

  • 相关阅读:
    javaSE第十五天
    javaSE第十四天
    javaSE第十三天
    javaSE第十二天
    javaSE第十一天
    javaSE第十天
    javaSE第九天
    python011 Python3 字典
    python010 Python3 元组
    python009 Python3 列表
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/1981441.html
Copyright © 2011-2022 走看看